@powerhousedao/service-offering 1.0.0-dev.24 → 1.0.0-dev.28
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/README.md +58 -164
- package/package.json +39 -57
- package/dist/document-models/document-models.d.ts +0 -3
- package/dist/document-models/document-models.d.ts.map +0 -1
- package/dist/document-models/document-models.js +0 -12
- package/dist/document-models/facet/gen/schema/types.d.ts +0 -195
- package/dist/document-models/facet/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/facet/gen/schema/types.js +0 -1
- package/dist/document-models/facet/gen/schema/zod.d.ts +0 -18
- package/dist/document-models/facet/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/facet/gen/schema/zod.js +0 -69
- package/dist/document-models/facet/index.d.ts +0 -3
- package/dist/document-models/facet/index.d.ts.map +0 -1
- package/dist/document-models/facet/index.js +0 -2
- package/dist/document-models/facet/upgrades/index.d.ts +0 -3
- package/dist/document-models/facet/upgrades/index.d.ts.map +0 -1
- package/dist/document-models/facet/upgrades/index.js +0 -2
- package/dist/document-models/facet/upgrades/upgrade-manifest.d.ts +0 -4
- package/dist/document-models/facet/upgrades/upgrade-manifest.d.ts.map +0 -1
- package/dist/document-models/facet/upgrades/upgrade-manifest.js +0 -7
- package/dist/document-models/facet/upgrades/versions.d.ts +0 -3
- package/dist/document-models/facet/upgrades/versions.d.ts.map +0 -1
- package/dist/document-models/facet/upgrades/versions.js +0 -2
- package/dist/document-models/facet/v1/actions.d.ts +0 -20
- package/dist/document-models/facet/v1/actions.d.ts.map +0 -1
- package/dist/document-models/facet/v1/actions.js +0 -8
- package/dist/document-models/facet/v1/gen/actions.d.ts +0 -6
- package/dist/document-models/facet/v1/gen/actions.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/actions.js +0 -2
- package/dist/document-models/facet/v1/gen/controller.d.ts +0 -4
- package/dist/document-models/facet/v1/gen/controller.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/controller.js +0 -3
- package/dist/document-models/facet/v1/gen/creators.d.ts +0 -5
- package/dist/document-models/facet/v1/gen/creators.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/creators.js +0 -4
- package/dist/document-models/facet/v1/gen/document-model.d.ts +0 -3
- package/dist/document-models/facet/v1/gen/document-model.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/document-model.js +0 -134
- package/dist/document-models/facet/v1/gen/document-schema.d.ts +0 -56
- package/dist/document-models/facet/v1/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/document-schema.js +0 -33
- package/dist/document-models/facet/v1/gen/document-type.d.ts +0 -2
- package/dist/document-models/facet/v1/gen/document-type.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/document-type.js +0 -1
- package/dist/document-models/facet/v1/gen/facet-management/actions.d.ts +0 -12
- package/dist/document-models/facet/v1/gen/facet-management/actions.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/facet-management/actions.js +0 -1
- package/dist/document-models/facet/v1/gen/facet-management/creators.d.ts +0 -5
- package/dist/document-models/facet/v1/gen/facet-management/creators.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/facet-management/creators.js +0 -4
- package/dist/document-models/facet/v1/gen/facet-management/error.d.ts +0 -2
- package/dist/document-models/facet/v1/gen/facet-management/error.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/facet-management/error.js +0 -1
- package/dist/document-models/facet/v1/gen/facet-management/operations.d.ts +0 -8
- package/dist/document-models/facet/v1/gen/facet-management/operations.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/facet-management/operations.js +0 -1
- package/dist/document-models/facet/v1/gen/index.d.ts +0 -14
- package/dist/document-models/facet/v1/gen/index.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/index.js +0 -13
- package/dist/document-models/facet/v1/gen/option-management/actions.d.ts +0 -20
- package/dist/document-models/facet/v1/gen/option-management/actions.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/option-management/actions.js +0 -1
- package/dist/document-models/facet/v1/gen/option-management/creators.d.ts +0 -7
- package/dist/document-models/facet/v1/gen/option-management/creators.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/option-management/creators.js +0 -6
- package/dist/document-models/facet/v1/gen/option-management/error.d.ts +0 -28
- package/dist/document-models/facet/v1/gen/option-management/error.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/option-management/error.js +0 -23
- package/dist/document-models/facet/v1/gen/option-management/operations.d.ts +0 -10
- package/dist/document-models/facet/v1/gen/option-management/operations.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/option-management/operations.js +0 -1
- package/dist/document-models/facet/v1/gen/ph-factories.d.ts +0 -23
- package/dist/document-models/facet/v1/gen/ph-factories.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/ph-factories.js +0 -51
- package/dist/document-models/facet/v1/gen/reducer.d.ts +0 -3
- package/dist/document-models/facet/v1/gen/reducer.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/reducer.js +0 -44
- package/dist/document-models/facet/v1/gen/schema/index.d.ts +0 -3
- package/dist/document-models/facet/v1/gen/schema/index.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/schema/index.js +0 -2
- package/dist/document-models/facet/v1/gen/schema/types.d.ts +0 -195
- package/dist/document-models/facet/v1/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/schema/types.js +0 -1
- package/dist/document-models/facet/v1/gen/schema/zod.d.ts +0 -18
- package/dist/document-models/facet/v1/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/schema/zod.js +0 -69
- package/dist/document-models/facet/v1/gen/types.d.ts +0 -12
- package/dist/document-models/facet/v1/gen/types.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/types.js +0 -1
- package/dist/document-models/facet/v1/gen/utils.d.ts +0 -15
- package/dist/document-models/facet/v1/gen/utils.d.ts.map +0 -1
- package/dist/document-models/facet/v1/gen/utils.js +0 -55
- package/dist/document-models/facet/v1/hooks.d.ts +0 -14
- package/dist/document-models/facet/v1/hooks.d.ts.map +0 -1
- package/dist/document-models/facet/v1/hooks.js +0 -25
- package/dist/document-models/facet/v1/index.d.ts +0 -6
- package/dist/document-models/facet/v1/index.d.ts.map +0 -1
- package/dist/document-models/facet/v1/index.js +0 -5
- package/dist/document-models/facet/v1/module.d.ts +0 -5
- package/dist/document-models/facet/v1/module.d.ts.map +0 -1
- package/dist/document-models/facet/v1/module.js +0 -14
- package/dist/document-models/facet/v1/src/index.d.ts +0 -2
- package/dist/document-models/facet/v1/src/index.d.ts.map +0 -1
- package/dist/document-models/facet/v1/src/index.js +0 -1
- package/dist/document-models/facet/v1/src/reducers/facet-management.d.ts +0 -3
- package/dist/document-models/facet/v1/src/reducers/facet-management.d.ts.map +0 -1
- package/dist/document-models/facet/v1/src/reducers/facet-management.js +0 -10
- package/dist/document-models/facet/v1/src/reducers/option-management.d.ts +0 -3
- package/dist/document-models/facet/v1/src/reducers/option-management.d.ts.map +0 -1
- package/dist/document-models/facet/v1/src/reducers/option-management.js +0 -56
- package/dist/document-models/facet/v1/src/utils.d.ts +0 -2
- package/dist/document-models/facet/v1/src/utils.d.ts.map +0 -1
- package/dist/document-models/facet/v1/src/utils.js +0 -1
- package/dist/document-models/facet/v1/tests/document-model.test.d.ts +0 -10
- package/dist/document-models/facet/v1/tests/document-model.test.d.ts.map +0 -1
- package/dist/document-models/facet/v1/tests/document-model.test.js +0 -104
- package/dist/document-models/facet/v1/tests/facet-management.test.d.ts +0 -2
- package/dist/document-models/facet/v1/tests/facet-management.test.d.ts.map +0 -1
- package/dist/document-models/facet/v1/tests/facet-management.test.js +0 -25
- package/dist/document-models/facet/v1/tests/option-management.test.d.ts +0 -2
- package/dist/document-models/facet/v1/tests/option-management.test.d.ts.map +0 -1
- package/dist/document-models/facet/v1/tests/option-management.test.js +0 -45
- package/dist/document-models/facet/v1/utils.d.ts +0 -14
- package/dist/document-models/facet/v1/utils.d.ts.map +0 -1
- package/dist/document-models/facet/v1/utils.js +0 -7
- package/dist/document-models/index.d.ts +0 -6
- package/dist/document-models/index.d.ts.map +0 -1
- package/dist/document-models/index.js +0 -5
- package/dist/document-models/resource-instance/gen/schema/types.d.ts +0 -272
- package/dist/document-models/resource-instance/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/resource-instance/gen/schema/types.js +0 -1
- package/dist/document-models/resource-instance/gen/schema/zod.d.ts +0 -44
- package/dist/document-models/resource-instance/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/resource-instance/gen/schema/zod.js +0 -187
- package/dist/document-models/resource-instance/index.d.ts +0 -3
- package/dist/document-models/resource-instance/index.d.ts.map +0 -1
- package/dist/document-models/resource-instance/index.js +0 -2
- package/dist/document-models/resource-instance/upgrades/index.d.ts +0 -3
- package/dist/document-models/resource-instance/upgrades/index.d.ts.map +0 -1
- package/dist/document-models/resource-instance/upgrades/index.js +0 -2
- package/dist/document-models/resource-instance/upgrades/upgrade-manifest.d.ts +0 -4
- package/dist/document-models/resource-instance/upgrades/upgrade-manifest.d.ts.map +0 -1
- package/dist/document-models/resource-instance/upgrades/upgrade-manifest.js +0 -7
- package/dist/document-models/resource-instance/upgrades/versions.d.ts +0 -3
- package/dist/document-models/resource-instance/upgrades/versions.d.ts.map +0 -1
- package/dist/document-models/resource-instance/upgrades/versions.js +0 -2
- package/dist/document-models/resource-instance/v1/actions.d.ts +0 -33
- package/dist/document-models/resource-instance/v1/actions.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/actions.js +0 -8
- package/dist/document-models/resource-instance/v1/gen/actions.d.ts +0 -6
- package/dist/document-models/resource-instance/v1/gen/actions.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/actions.js +0 -2
- package/dist/document-models/resource-instance/v1/gen/configuration-management/actions.d.ts +0 -20
- package/dist/document-models/resource-instance/v1/gen/configuration-management/actions.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/configuration-management/actions.js +0 -1
- package/dist/document-models/resource-instance/v1/gen/configuration-management/creators.d.ts +0 -7
- package/dist/document-models/resource-instance/v1/gen/configuration-management/creators.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/configuration-management/creators.js +0 -6
- package/dist/document-models/resource-instance/v1/gen/configuration-management/error.d.ts +0 -35
- package/dist/document-models/resource-instance/v1/gen/configuration-management/error.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/configuration-management/error.js +0 -32
- package/dist/document-models/resource-instance/v1/gen/configuration-management/operations.d.ts +0 -10
- package/dist/document-models/resource-instance/v1/gen/configuration-management/operations.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/configuration-management/operations.js +0 -1
- package/dist/document-models/resource-instance/v1/gen/controller.d.ts +0 -4
- package/dist/document-models/resource-instance/v1/gen/controller.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/controller.js +0 -3
- package/dist/document-models/resource-instance/v1/gen/creators.d.ts +0 -5
- package/dist/document-models/resource-instance/v1/gen/creators.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/creators.js +0 -4
- package/dist/document-models/resource-instance/v1/gen/document-model.d.ts +0 -3
- package/dist/document-models/resource-instance/v1/gen/document-model.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/document-model.js +0 -394
- package/dist/document-models/resource-instance/v1/gen/document-schema.d.ts +0 -107
- package/dist/document-models/resource-instance/v1/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/document-schema.js +0 -33
- package/dist/document-models/resource-instance/v1/gen/document-type.d.ts +0 -2
- package/dist/document-models/resource-instance/v1/gen/document-type.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/document-type.js +0 -1
- package/dist/document-models/resource-instance/v1/gen/index.d.ts +0 -14
- package/dist/document-models/resource-instance/v1/gen/index.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/index.js +0 -13
- package/dist/document-models/resource-instance/v1/gen/instance-management/actions.d.ts +0 -64
- package/dist/document-models/resource-instance/v1/gen/instance-management/actions.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/instance-management/actions.js +0 -1
- package/dist/document-models/resource-instance/v1/gen/instance-management/creators.d.ts +0 -18
- package/dist/document-models/resource-instance/v1/gen/instance-management/creators.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/instance-management/creators.js +0 -17
- package/dist/document-models/resource-instance/v1/gen/instance-management/error.d.ts +0 -99
- package/dist/document-models/resource-instance/v1/gen/instance-management/error.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/instance-management/error.js +0 -112
- package/dist/document-models/resource-instance/v1/gen/instance-management/operations.d.ts +0 -21
- package/dist/document-models/resource-instance/v1/gen/instance-management/operations.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/instance-management/operations.js +0 -1
- package/dist/document-models/resource-instance/v1/gen/ph-factories.d.ts +0 -23
- package/dist/document-models/resource-instance/v1/gen/ph-factories.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/ph-factories.js +0 -68
- package/dist/document-models/resource-instance/v1/gen/reducer.d.ts +0 -3
- package/dist/document-models/resource-instance/v1/gen/reducer.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/reducer.js +0 -109
- package/dist/document-models/resource-instance/v1/gen/schema/index.d.ts +0 -3
- package/dist/document-models/resource-instance/v1/gen/schema/index.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/schema/index.js +0 -2
- package/dist/document-models/resource-instance/v1/gen/schema/types.d.ts +0 -272
- package/dist/document-models/resource-instance/v1/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/schema/types.js +0 -1
- package/dist/document-models/resource-instance/v1/gen/schema/zod.d.ts +0 -44
- package/dist/document-models/resource-instance/v1/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/schema/zod.js +0 -187
- package/dist/document-models/resource-instance/v1/gen/types.d.ts +0 -12
- package/dist/document-models/resource-instance/v1/gen/types.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/types.js +0 -1
- package/dist/document-models/resource-instance/v1/gen/utils.d.ts +0 -15
- package/dist/document-models/resource-instance/v1/gen/utils.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/gen/utils.js +0 -72
- package/dist/document-models/resource-instance/v1/hooks.d.ts +0 -14
- package/dist/document-models/resource-instance/v1/hooks.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/hooks.js +0 -25
- package/dist/document-models/resource-instance/v1/index.d.ts +0 -6
- package/dist/document-models/resource-instance/v1/index.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/index.js +0 -5
- package/dist/document-models/resource-instance/v1/module.d.ts +0 -5
- package/dist/document-models/resource-instance/v1/module.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/module.js +0 -14
- package/dist/document-models/resource-instance/v1/src/index.d.ts +0 -2
- package/dist/document-models/resource-instance/v1/src/index.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/src/index.js +0 -1
- package/dist/document-models/resource-instance/v1/src/reducers/configuration-management.d.ts +0 -3
- package/dist/document-models/resource-instance/v1/src/reducers/configuration-management.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/src/reducers/configuration-management.js +0 -77
- package/dist/document-models/resource-instance/v1/src/reducers/instance-management.d.ts +0 -3
- package/dist/document-models/resource-instance/v1/src/reducers/instance-management.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/src/reducers/instance-management.js +0 -141
- package/dist/document-models/resource-instance/v1/src/utils.d.ts +0 -2
- package/dist/document-models/resource-instance/v1/src/utils.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/src/utils.js +0 -1
- package/dist/document-models/resource-instance/v1/tests/configuration-management.test.d.ts +0 -2
- package/dist/document-models/resource-instance/v1/tests/configuration-management.test.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/tests/configuration-management.test.js +0 -45
- package/dist/document-models/resource-instance/v1/tests/document-model.test.d.ts +0 -10
- package/dist/document-models/resource-instance/v1/tests/document-model.test.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/tests/document-model.test.js +0 -104
- package/dist/document-models/resource-instance/v1/tests/instance-management.test.d.ts +0 -2
- package/dist/document-models/resource-instance/v1/tests/instance-management.test.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/tests/instance-management.test.js +0 -155
- package/dist/document-models/resource-instance/v1/utils.d.ts +0 -14
- package/dist/document-models/resource-instance/v1/utils.d.ts.map +0 -1
- package/dist/document-models/resource-instance/v1/utils.js +0 -7
- package/dist/document-models/resource-template/gen/schema/types.d.ts +0 -371
- package/dist/document-models/resource-template/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/resource-template/gen/schema/types.js +0 -1
- package/dist/document-models/resource-template/gen/schema/zod.d.ts +0 -52
- package/dist/document-models/resource-template/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/resource-template/gen/schema/zod.js +0 -312
- package/dist/document-models/resource-template/index.d.ts +0 -3
- package/dist/document-models/resource-template/index.d.ts.map +0 -1
- package/dist/document-models/resource-template/index.js +0 -2
- package/dist/document-models/resource-template/upgrades/index.d.ts +0 -3
- package/dist/document-models/resource-template/upgrades/index.d.ts.map +0 -1
- package/dist/document-models/resource-template/upgrades/index.js +0 -2
- package/dist/document-models/resource-template/upgrades/upgrade-manifest.d.ts +0 -4
- package/dist/document-models/resource-template/upgrades/upgrade-manifest.d.ts.map +0 -1
- package/dist/document-models/resource-template/upgrades/upgrade-manifest.js +0 -7
- package/dist/document-models/resource-template/upgrades/versions.d.ts +0 -3
- package/dist/document-models/resource-template/upgrades/versions.d.ts.map +0 -1
- package/dist/document-models/resource-template/upgrades/versions.js +0 -2
- package/dist/document-models/resource-template/v1/actions.d.ts +0 -43
- package/dist/document-models/resource-template/v1/actions.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/actions.js +0 -13
- package/dist/document-models/resource-template/v1/gen/actions.d.ts +0 -16
- package/dist/document-models/resource-template/v1/gen/actions.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/actions.js +0 -7
- package/dist/document-models/resource-template/v1/gen/audience-management/actions.d.ts +0 -12
- package/dist/document-models/resource-template/v1/gen/audience-management/actions.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/audience-management/actions.js +0 -1
- package/dist/document-models/resource-template/v1/gen/audience-management/creators.d.ts +0 -5
- package/dist/document-models/resource-template/v1/gen/audience-management/creators.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/audience-management/creators.js +0 -4
- package/dist/document-models/resource-template/v1/gen/audience-management/error.d.ts +0 -21
- package/dist/document-models/resource-template/v1/gen/audience-management/error.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/audience-management/error.js +0 -16
- package/dist/document-models/resource-template/v1/gen/audience-management/operations.d.ts +0 -8
- package/dist/document-models/resource-template/v1/gen/audience-management/operations.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/audience-management/operations.js +0 -1
- package/dist/document-models/resource-template/v1/gen/content-section-management/actions.d.ts +0 -20
- package/dist/document-models/resource-template/v1/gen/content-section-management/actions.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/content-section-management/actions.js +0 -1
- package/dist/document-models/resource-template/v1/gen/content-section-management/creators.d.ts +0 -7
- package/dist/document-models/resource-template/v1/gen/content-section-management/creators.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/content-section-management/creators.js +0 -6
- package/dist/document-models/resource-template/v1/gen/content-section-management/error.d.ts +0 -2
- package/dist/document-models/resource-template/v1/gen/content-section-management/error.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/content-section-management/error.js +0 -1
- package/dist/document-models/resource-template/v1/gen/content-section-management/operations.d.ts +0 -10
- package/dist/document-models/resource-template/v1/gen/content-section-management/operations.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/content-section-management/operations.js +0 -1
- package/dist/document-models/resource-template/v1/gen/controller.d.ts +0 -4
- package/dist/document-models/resource-template/v1/gen/controller.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/controller.js +0 -3
- package/dist/document-models/resource-template/v1/gen/creators.d.ts +0 -15
- package/dist/document-models/resource-template/v1/gen/creators.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/creators.js +0 -14
- package/dist/document-models/resource-template/v1/gen/document-model.d.ts +0 -3
- package/dist/document-models/resource-template/v1/gen/document-model.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/document-model.js +0 -516
- package/dist/document-models/resource-template/v1/gen/document-schema.d.ts +0 -98
- package/dist/document-models/resource-template/v1/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/document-schema.js +0 -33
- package/dist/document-models/resource-template/v1/gen/document-type.d.ts +0 -2
- package/dist/document-models/resource-template/v1/gen/document-type.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/document-type.js +0 -1
- package/dist/document-models/resource-template/v1/gen/facet-targeting/actions.d.ts +0 -20
- package/dist/document-models/resource-template/v1/gen/facet-targeting/actions.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/facet-targeting/actions.js +0 -1
- package/dist/document-models/resource-template/v1/gen/facet-targeting/creators.d.ts +0 -7
- package/dist/document-models/resource-template/v1/gen/facet-targeting/creators.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/facet-targeting/creators.js +0 -6
- package/dist/document-models/resource-template/v1/gen/facet-targeting/error.d.ts +0 -28
- package/dist/document-models/resource-template/v1/gen/facet-targeting/error.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/facet-targeting/error.js +0 -23
- package/dist/document-models/resource-template/v1/gen/facet-targeting/operations.d.ts +0 -10
- package/dist/document-models/resource-template/v1/gen/facet-targeting/operations.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/facet-targeting/operations.js +0 -1
- package/dist/document-models/resource-template/v1/gen/index.d.ts +0 -19
- package/dist/document-models/resource-template/v1/gen/index.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/index.js +0 -18
- package/dist/document-models/resource-template/v1/gen/option-group-management/actions.d.ts +0 -32
- package/dist/document-models/resource-template/v1/gen/option-group-management/actions.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/option-group-management/actions.js +0 -1
- package/dist/document-models/resource-template/v1/gen/option-group-management/creators.d.ts +0 -10
- package/dist/document-models/resource-template/v1/gen/option-group-management/creators.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/option-group-management/creators.js +0 -9
- package/dist/document-models/resource-template/v1/gen/option-group-management/error.d.ts +0 -28
- package/dist/document-models/resource-template/v1/gen/option-group-management/error.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/option-group-management/error.js +0 -23
- package/dist/document-models/resource-template/v1/gen/option-group-management/operations.d.ts +0 -13
- package/dist/document-models/resource-template/v1/gen/option-group-management/operations.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/option-group-management/operations.js +0 -1
- package/dist/document-models/resource-template/v1/gen/ph-factories.d.ts +0 -23
- package/dist/document-models/resource-template/v1/gen/ph-factories.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/ph-factories.js +0 -65
- package/dist/document-models/resource-template/v1/gen/reducer.d.ts +0 -3
- package/dist/document-models/resource-template/v1/gen/reducer.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/reducer.js +0 -164
- package/dist/document-models/resource-template/v1/gen/schema/index.d.ts +0 -3
- package/dist/document-models/resource-template/v1/gen/schema/index.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/schema/index.js +0 -2
- package/dist/document-models/resource-template/v1/gen/schema/types.d.ts +0 -378
- package/dist/document-models/resource-template/v1/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/schema/types.js +0 -1
- package/dist/document-models/resource-template/v1/gen/schema/zod.d.ts +0 -53
- package/dist/document-models/resource-template/v1/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/schema/zod.js +0 -321
- package/dist/document-models/resource-template/v1/gen/service-category-management/actions.d.ts +0 -12
- package/dist/document-models/resource-template/v1/gen/service-category-management/actions.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/service-category-management/actions.js +0 -1
- package/dist/document-models/resource-template/v1/gen/service-category-management/creators.d.ts +0 -5
- package/dist/document-models/resource-template/v1/gen/service-category-management/creators.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/service-category-management/creators.js +0 -4
- package/dist/document-models/resource-template/v1/gen/service-category-management/error.d.ts +0 -2
- package/dist/document-models/resource-template/v1/gen/service-category-management/error.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/service-category-management/error.js +0 -1
- package/dist/document-models/resource-template/v1/gen/service-category-management/operations.d.ts +0 -8
- package/dist/document-models/resource-template/v1/gen/service-category-management/operations.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/service-category-management/operations.js +0 -1
- package/dist/document-models/resource-template/v1/gen/service-management/actions.d.ts +0 -24
- package/dist/document-models/resource-template/v1/gen/service-management/actions.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/service-management/actions.js +0 -1
- package/dist/document-models/resource-template/v1/gen/service-management/creators.d.ts +0 -8
- package/dist/document-models/resource-template/v1/gen/service-management/creators.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/service-management/creators.js +0 -7
- package/dist/document-models/resource-template/v1/gen/service-management/error.d.ts +0 -52
- package/dist/document-models/resource-template/v1/gen/service-management/error.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/service-management/error.js +0 -49
- package/dist/document-models/resource-template/v1/gen/service-management/operations.d.ts +0 -11
- package/dist/document-models/resource-template/v1/gen/service-management/operations.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/service-management/operations.js +0 -1
- package/dist/document-models/resource-template/v1/gen/template-management/actions.d.ts +0 -24
- package/dist/document-models/resource-template/v1/gen/template-management/actions.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/template-management/actions.js +0 -1
- package/dist/document-models/resource-template/v1/gen/template-management/creators.d.ts +0 -8
- package/dist/document-models/resource-template/v1/gen/template-management/creators.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/template-management/creators.js +0 -7
- package/dist/document-models/resource-template/v1/gen/template-management/error.d.ts +0 -2
- package/dist/document-models/resource-template/v1/gen/template-management/error.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/template-management/error.js +0 -1
- package/dist/document-models/resource-template/v1/gen/template-management/operations.d.ts +0 -11
- package/dist/document-models/resource-template/v1/gen/template-management/operations.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/template-management/operations.js +0 -1
- package/dist/document-models/resource-template/v1/gen/types.d.ts +0 -12
- package/dist/document-models/resource-template/v1/gen/types.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/types.js +0 -1
- package/dist/document-models/resource-template/v1/gen/utils.d.ts +0 -15
- package/dist/document-models/resource-template/v1/gen/utils.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/gen/utils.js +0 -69
- package/dist/document-models/resource-template/v1/hooks.d.ts +0 -14
- package/dist/document-models/resource-template/v1/hooks.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/hooks.js +0 -25
- package/dist/document-models/resource-template/v1/index.d.ts +0 -6
- package/dist/document-models/resource-template/v1/index.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/index.js +0 -5
- package/dist/document-models/resource-template/v1/module.d.ts +0 -5
- package/dist/document-models/resource-template/v1/module.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/module.js +0 -14
- package/dist/document-models/resource-template/v1/src/index.d.ts +0 -2
- package/dist/document-models/resource-template/v1/src/index.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/src/index.js +0 -1
- package/dist/document-models/resource-template/v1/src/reducers/audience-management.d.ts +0 -3
- package/dist/document-models/resource-template/v1/src/reducers/audience-management.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/src/reducers/audience-management.js +0 -17
- package/dist/document-models/resource-template/v1/src/reducers/content-section-management.d.ts +0 -3
- package/dist/document-models/resource-template/v1/src/reducers/content-section-management.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/src/reducers/content-section-management.js +0 -44
- package/dist/document-models/resource-template/v1/src/reducers/facet-targeting.d.ts +0 -3
- package/dist/document-models/resource-template/v1/src/reducers/facet-targeting.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/src/reducers/facet-targeting.js +0 -47
- package/dist/document-models/resource-template/v1/src/reducers/option-group-management.d.ts +0 -3
- package/dist/document-models/resource-template/v1/src/reducers/option-group-management.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/src/reducers/option-group-management.js +0 -66
- package/dist/document-models/resource-template/v1/src/reducers/service-category-management.d.ts +0 -3
- package/dist/document-models/resource-template/v1/src/reducers/service-category-management.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/src/reducers/service-category-management.js +0 -10
- package/dist/document-models/resource-template/v1/src/reducers/service-management.d.ts +0 -3
- package/dist/document-models/resource-template/v1/src/reducers/service-management.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/src/reducers/service-management.js +0 -71
- package/dist/document-models/resource-template/v1/src/reducers/template-management.d.ts +0 -3
- package/dist/document-models/resource-template/v1/src/reducers/template-management.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/src/reducers/template-management.js +0 -39
- package/dist/document-models/resource-template/v1/src/utils.d.ts +0 -2
- package/dist/document-models/resource-template/v1/src/utils.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/src/utils.js +0 -1
- package/dist/document-models/resource-template/v1/tests/audience-management.test.d.ts +0 -2
- package/dist/document-models/resource-template/v1/tests/audience-management.test.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/tests/audience-management.test.js +0 -25
- package/dist/document-models/resource-template/v1/tests/content-section-management.test.d.ts +0 -2
- package/dist/document-models/resource-template/v1/tests/content-section-management.test.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/tests/content-section-management.test.js +0 -45
- package/dist/document-models/resource-template/v1/tests/document-model.test.d.ts +0 -10
- package/dist/document-models/resource-template/v1/tests/document-model.test.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/tests/document-model.test.js +0 -104
- package/dist/document-models/resource-template/v1/tests/facet-targeting.test.d.ts +0 -2
- package/dist/document-models/resource-template/v1/tests/facet-targeting.test.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/tests/facet-targeting.test.js +0 -45
- package/dist/document-models/resource-template/v1/tests/option-group-management.test.d.ts +0 -2
- package/dist/document-models/resource-template/v1/tests/option-group-management.test.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/tests/option-group-management.test.js +0 -75
- package/dist/document-models/resource-template/v1/tests/service-category-management.test.d.ts +0 -2
- package/dist/document-models/resource-template/v1/tests/service-category-management.test.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/tests/service-category-management.test.js +0 -25
- package/dist/document-models/resource-template/v1/tests/service-management.test.d.ts +0 -2
- package/dist/document-models/resource-template/v1/tests/service-management.test.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/tests/service-management.test.js +0 -55
- package/dist/document-models/resource-template/v1/tests/template-management.test.d.ts +0 -2
- package/dist/document-models/resource-template/v1/tests/template-management.test.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/tests/template-management.test.js +0 -55
- package/dist/document-models/resource-template/v1/utils.d.ts +0 -14
- package/dist/document-models/resource-template/v1/utils.d.ts.map +0 -1
- package/dist/document-models/resource-template/v1/utils.js +0 -7
- package/dist/document-models/service-offering/gen/schema/types.d.ts +0 -526
- package/dist/document-models/service-offering/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/service-offering/gen/schema/types.js +0 -1
- package/dist/document-models/service-offering/gen/schema/zod.d.ts +0 -114
- package/dist/document-models/service-offering/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/service-offering/gen/schema/zod.js +0 -539
- package/dist/document-models/service-offering/index.d.ts +0 -3
- package/dist/document-models/service-offering/index.d.ts.map +0 -1
- package/dist/document-models/service-offering/index.js +0 -2
- package/dist/document-models/service-offering/upgrades/index.d.ts +0 -3
- package/dist/document-models/service-offering/upgrades/index.d.ts.map +0 -1
- package/dist/document-models/service-offering/upgrades/index.js +0 -2
- package/dist/document-models/service-offering/upgrades/upgrade-manifest.d.ts +0 -4
- package/dist/document-models/service-offering/upgrades/upgrade-manifest.d.ts.map +0 -1
- package/dist/document-models/service-offering/upgrades/upgrade-manifest.js +0 -7
- package/dist/document-models/service-offering/upgrades/versions.d.ts +0 -3
- package/dist/document-models/service-offering/upgrades/versions.d.ts.map +0 -1
- package/dist/document-models/service-offering/upgrades/versions.js +0 -2
- package/dist/document-models/service-offering/v1/actions.d.ts +0 -50
- package/dist/document-models/service-offering/v1/actions.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/actions.js +0 -10
- package/dist/document-models/service-offering/v1/gen/actions.d.ts +0 -10
- package/dist/document-models/service-offering/v1/gen/actions.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/actions.js +0 -4
- package/dist/document-models/service-offering/v1/gen/controller.d.ts +0 -4
- package/dist/document-models/service-offering/v1/gen/controller.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/controller.js +0 -3
- package/dist/document-models/service-offering/v1/gen/creators.d.ts +0 -9
- package/dist/document-models/service-offering/v1/gen/creators.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/creators.js +0 -8
- package/dist/document-models/service-offering/v1/gen/document-model.d.ts +0 -3
- package/dist/document-models/service-offering/v1/gen/document-model.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/document-model.js +0 -691
- package/dist/document-models/service-offering/v1/gen/document-schema.d.ts +0 -86
- package/dist/document-models/service-offering/v1/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/document-schema.js +0 -33
- package/dist/document-models/service-offering/v1/gen/document-type.d.ts +0 -2
- package/dist/document-models/service-offering/v1/gen/document-type.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/document-type.js +0 -1
- package/dist/document-models/service-offering/v1/gen/index.d.ts +0 -16
- package/dist/document-models/service-offering/v1/gen/index.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/index.js +0 -15
- package/dist/document-models/service-offering/v1/gen/offering/actions.d.ts +0 -48
- package/dist/document-models/service-offering/v1/gen/offering/actions.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/offering/actions.js +0 -1
- package/dist/document-models/service-offering/v1/gen/offering/creators.d.ts +0 -14
- package/dist/document-models/service-offering/v1/gen/offering/creators.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/offering/creators.js +0 -13
- package/dist/document-models/service-offering/v1/gen/offering/error.d.ts +0 -42
- package/dist/document-models/service-offering/v1/gen/offering/error.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/offering/error.js +0 -37
- package/dist/document-models/service-offering/v1/gen/offering/operations.d.ts +0 -17
- package/dist/document-models/service-offering/v1/gen/offering/operations.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/offering/operations.js +0 -1
- package/dist/document-models/service-offering/v1/gen/option-groups/actions.d.ts +0 -36
- package/dist/document-models/service-offering/v1/gen/option-groups/actions.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/option-groups/actions.js +0 -1
- package/dist/document-models/service-offering/v1/gen/option-groups/creators.d.ts +0 -11
- package/dist/document-models/service-offering/v1/gen/option-groups/creators.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/option-groups/creators.js +0 -10
- package/dist/document-models/service-offering/v1/gen/option-groups/error.d.ts +0 -56
- package/dist/document-models/service-offering/v1/gen/option-groups/error.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/option-groups/error.js +0 -53
- package/dist/document-models/service-offering/v1/gen/option-groups/operations.d.ts +0 -14
- package/dist/document-models/service-offering/v1/gen/option-groups/operations.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/option-groups/operations.js +0 -1
- package/dist/document-models/service-offering/v1/gen/ph-factories.d.ts +0 -23
- package/dist/document-models/service-offering/v1/gen/ph-factories.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/ph-factories.js +0 -61
- package/dist/document-models/service-offering/v1/gen/reducer.d.ts +0 -3
- package/dist/document-models/service-offering/v1/gen/reducer.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/reducer.js +0 -196
- package/dist/document-models/service-offering/v1/gen/schema/index.d.ts +0 -3
- package/dist/document-models/service-offering/v1/gen/schema/index.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/schema/index.js +0 -2
- package/dist/document-models/service-offering/v1/gen/schema/types.d.ts +0 -533
- package/dist/document-models/service-offering/v1/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/schema/types.js +0 -1
- package/dist/document-models/service-offering/v1/gen/schema/zod.d.ts +0 -115
- package/dist/document-models/service-offering/v1/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/schema/zod.js +0 -548
- package/dist/document-models/service-offering/v1/gen/services/actions.d.ts +0 -16
- package/dist/document-models/service-offering/v1/gen/services/actions.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/services/actions.js +0 -1
- package/dist/document-models/service-offering/v1/gen/services/creators.d.ts +0 -6
- package/dist/document-models/service-offering/v1/gen/services/creators.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/services/creators.js +0 -5
- package/dist/document-models/service-offering/v1/gen/services/error.d.ts +0 -21
- package/dist/document-models/service-offering/v1/gen/services/error.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/services/error.js +0 -16
- package/dist/document-models/service-offering/v1/gen/services/operations.d.ts +0 -9
- package/dist/document-models/service-offering/v1/gen/services/operations.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/services/operations.js +0 -1
- package/dist/document-models/service-offering/v1/gen/tiers/actions.d.ts +0 -60
- package/dist/document-models/service-offering/v1/gen/tiers/actions.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/tiers/actions.js +0 -1
- package/dist/document-models/service-offering/v1/gen/tiers/creators.d.ts +0 -17
- package/dist/document-models/service-offering/v1/gen/tiers/creators.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/tiers/creators.js +0 -16
- package/dist/document-models/service-offering/v1/gen/tiers/error.d.ts +0 -113
- package/dist/document-models/service-offering/v1/gen/tiers/error.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/tiers/error.js +0 -119
- package/dist/document-models/service-offering/v1/gen/tiers/operations.d.ts +0 -20
- package/dist/document-models/service-offering/v1/gen/tiers/operations.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/tiers/operations.js +0 -1
- package/dist/document-models/service-offering/v1/gen/types.d.ts +0 -12
- package/dist/document-models/service-offering/v1/gen/types.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/types.js +0 -1
- package/dist/document-models/service-offering/v1/gen/utils.d.ts +0 -15
- package/dist/document-models/service-offering/v1/gen/utils.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/gen/utils.js +0 -65
- package/dist/document-models/service-offering/v1/hooks.d.ts +0 -14
- package/dist/document-models/service-offering/v1/hooks.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/hooks.js +0 -25
- package/dist/document-models/service-offering/v1/index.d.ts +0 -6
- package/dist/document-models/service-offering/v1/index.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/index.js +0 -5
- package/dist/document-models/service-offering/v1/module.d.ts +0 -5
- package/dist/document-models/service-offering/v1/module.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/module.js +0 -14
- package/dist/document-models/service-offering/v1/src/index.d.ts +0 -2
- package/dist/document-models/service-offering/v1/src/index.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/src/index.js +0 -1
- package/dist/document-models/service-offering/v1/src/reducers/offering.d.ts +0 -3
- package/dist/document-models/service-offering/v1/src/reducers/offering.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/src/reducers/offering.js +0 -89
- package/dist/document-models/service-offering/v1/src/reducers/option-groups.d.ts +0 -3
- package/dist/document-models/service-offering/v1/src/reducers/option-groups.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/src/reducers/option-groups.js +0 -212
- package/dist/document-models/service-offering/v1/src/reducers/services.d.ts +0 -3
- package/dist/document-models/service-offering/v1/src/reducers/services.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/src/reducers/services.js +0 -40
- package/dist/document-models/service-offering/v1/src/reducers/tiers.d.ts +0 -3
- package/dist/document-models/service-offering/v1/src/reducers/tiers.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/src/reducers/tiers.js +0 -216
- package/dist/document-models/service-offering/v1/src/utils.d.ts +0 -61
- package/dist/document-models/service-offering/v1/src/utils.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/src/utils.js +0 -176
- package/dist/document-models/service-offering/v1/tests/document-model.test.d.ts +0 -10
- package/dist/document-models/service-offering/v1/tests/document-model.test.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/tests/document-model.test.js +0 -104
- package/dist/document-models/service-offering/v1/tests/offering.test.d.ts +0 -2
- package/dist/document-models/service-offering/v1/tests/offering.test.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/tests/offering.test.js +0 -115
- package/dist/document-models/service-offering/v1/tests/option-groups.test.d.ts +0 -2
- package/dist/document-models/service-offering/v1/tests/option-groups.test.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/tests/option-groups.test.js +0 -85
- package/dist/document-models/service-offering/v1/tests/services.test.d.ts +0 -2
- package/dist/document-models/service-offering/v1/tests/services.test.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/tests/services.test.js +0 -35
- package/dist/document-models/service-offering/v1/tests/tiers.test.d.ts +0 -2
- package/dist/document-models/service-offering/v1/tests/tiers.test.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/tests/tiers.test.js +0 -145
- package/dist/document-models/service-offering/v1/utils.d.ts +0 -17
- package/dist/document-models/service-offering/v1/utils.d.ts.map +0 -1
- package/dist/document-models/service-offering/v1/utils.js +0 -7
- package/dist/document-models/subscription-instance/gen/schema/types.d.ts +0 -552
- package/dist/document-models/subscription-instance/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/gen/schema/types.js +0 -1
- package/dist/document-models/subscription-instance/gen/schema/zod.d.ts +0 -109
- package/dist/document-models/subscription-instance/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/gen/schema/zod.js +0 -556
- package/dist/document-models/subscription-instance/index.d.ts +0 -3
- package/dist/document-models/subscription-instance/index.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/index.js +0 -2
- package/dist/document-models/subscription-instance/upgrades/index.d.ts +0 -3
- package/dist/document-models/subscription-instance/upgrades/index.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/upgrades/index.js +0 -2
- package/dist/document-models/subscription-instance/upgrades/upgrade-manifest.d.ts +0 -4
- package/dist/document-models/subscription-instance/upgrades/upgrade-manifest.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/upgrades/upgrade-manifest.js +0 -7
- package/dist/document-models/subscription-instance/upgrades/versions.d.ts +0 -3
- package/dist/document-models/subscription-instance/upgrades/versions.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/upgrades/versions.js +0 -2
- package/dist/document-models/subscription-instance/v1/actions.d.ts +0 -53
- package/dist/document-models/subscription-instance/v1/actions.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/actions.js +0 -11
- package/dist/document-models/subscription-instance/v1/gen/actions.d.ts +0 -12
- package/dist/document-models/subscription-instance/v1/gen/actions.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/actions.js +0 -5
- package/dist/document-models/subscription-instance/v1/gen/controller.d.ts +0 -4
- package/dist/document-models/subscription-instance/v1/gen/controller.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/controller.js +0 -3
- package/dist/document-models/subscription-instance/v1/gen/creators.d.ts +0 -11
- package/dist/document-models/subscription-instance/v1/gen/creators.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/creators.js +0 -10
- package/dist/document-models/subscription-instance/v1/gen/customer/actions.d.ts +0 -12
- package/dist/document-models/subscription-instance/v1/gen/customer/actions.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/customer/actions.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/customer/creators.d.ts +0 -5
- package/dist/document-models/subscription-instance/v1/gen/customer/creators.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/customer/creators.js +0 -4
- package/dist/document-models/subscription-instance/v1/gen/customer/error.d.ts +0 -2
- package/dist/document-models/subscription-instance/v1/gen/customer/error.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/customer/error.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/customer/operations.d.ts +0 -8
- package/dist/document-models/subscription-instance/v1/gen/customer/operations.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/customer/operations.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/document-model.d.ts +0 -3
- package/dist/document-models/subscription-instance/v1/gen/document-model.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/document-model.js +0 -736
- package/dist/document-models/subscription-instance/v1/gen/document-schema.d.ts +0 -134
- package/dist/document-models/subscription-instance/v1/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/document-schema.js +0 -33
- package/dist/document-models/subscription-instance/v1/gen/document-type.d.ts +0 -2
- package/dist/document-models/subscription-instance/v1/gen/document-type.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/document-type.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/index.d.ts +0 -17
- package/dist/document-models/subscription-instance/v1/gen/index.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/index.js +0 -16
- package/dist/document-models/subscription-instance/v1/gen/metrics/actions.d.ts +0 -28
- package/dist/document-models/subscription-instance/v1/gen/metrics/actions.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/metrics/actions.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/metrics/creators.d.ts +0 -9
- package/dist/document-models/subscription-instance/v1/gen/metrics/creators.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/metrics/creators.js +0 -8
- package/dist/document-models/subscription-instance/v1/gen/metrics/error.d.ts +0 -74
- package/dist/document-models/subscription-instance/v1/gen/metrics/error.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/metrics/error.js +0 -86
- package/dist/document-models/subscription-instance/v1/gen/metrics/operations.d.ts +0 -12
- package/dist/document-models/subscription-instance/v1/gen/metrics/operations.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/metrics/operations.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/ph-factories.d.ts +0 -23
- package/dist/document-models/subscription-instance/v1/gen/ph-factories.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/ph-factories.js +0 -77
- package/dist/document-models/subscription-instance/v1/gen/reducer.d.ts +0 -3
- package/dist/document-models/subscription-instance/v1/gen/reducer.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/reducer.js +0 -212
- package/dist/document-models/subscription-instance/v1/gen/schema/index.d.ts +0 -3
- package/dist/document-models/subscription-instance/v1/gen/schema/index.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/schema/index.js +0 -2
- package/dist/document-models/subscription-instance/v1/gen/schema/types.d.ts +0 -552
- package/dist/document-models/subscription-instance/v1/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/schema/types.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/schema/zod.d.ts +0 -109
- package/dist/document-models/subscription-instance/v1/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/schema/zod.js +0 -556
- package/dist/document-models/subscription-instance/v1/gen/service/actions.d.ts +0 -40
- package/dist/document-models/subscription-instance/v1/gen/service/actions.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service/actions.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service/creators.d.ts +0 -12
- package/dist/document-models/subscription-instance/v1/gen/service/creators.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service/creators.js +0 -11
- package/dist/document-models/subscription-instance/v1/gen/service/error.d.ts +0 -63
- package/dist/document-models/subscription-instance/v1/gen/service/error.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service/error.js +0 -60
- package/dist/document-models/subscription-instance/v1/gen/service/operations.d.ts +0 -15
- package/dist/document-models/subscription-instance/v1/gen/service/operations.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service/operations.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service-group/actions.d.ts +0 -24
- package/dist/document-models/subscription-instance/v1/gen/service-group/actions.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service-group/actions.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service-group/creators.d.ts +0 -8
- package/dist/document-models/subscription-instance/v1/gen/service-group/creators.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service-group/creators.js +0 -7
- package/dist/document-models/subscription-instance/v1/gen/service-group/error.d.ts +0 -40
- package/dist/document-models/subscription-instance/v1/gen/service-group/error.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service-group/error.js +0 -39
- package/dist/document-models/subscription-instance/v1/gen/service-group/operations.d.ts +0 -11
- package/dist/document-models/subscription-instance/v1/gen/service-group/operations.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/service-group/operations.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/subscription/actions.d.ts +0 -72
- package/dist/document-models/subscription-instance/v1/gen/subscription/actions.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/subscription/actions.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/subscription/creators.d.ts +0 -20
- package/dist/document-models/subscription-instance/v1/gen/subscription/creators.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/subscription/creators.js +0 -19
- package/dist/document-models/subscription-instance/v1/gen/subscription/error.d.ts +0 -56
- package/dist/document-models/subscription-instance/v1/gen/subscription/error.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/subscription/error.js +0 -51
- package/dist/document-models/subscription-instance/v1/gen/subscription/operations.d.ts +0 -23
- package/dist/document-models/subscription-instance/v1/gen/subscription/operations.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/subscription/operations.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/types.d.ts +0 -12
- package/dist/document-models/subscription-instance/v1/gen/types.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/types.js +0 -1
- package/dist/document-models/subscription-instance/v1/gen/utils.d.ts +0 -15
- package/dist/document-models/subscription-instance/v1/gen/utils.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/gen/utils.js +0 -81
- package/dist/document-models/subscription-instance/v1/hooks.d.ts +0 -14
- package/dist/document-models/subscription-instance/v1/hooks.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/hooks.js +0 -25
- package/dist/document-models/subscription-instance/v1/index.d.ts +0 -6
- package/dist/document-models/subscription-instance/v1/index.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/index.js +0 -5
- package/dist/document-models/subscription-instance/v1/module.d.ts +0 -5
- package/dist/document-models/subscription-instance/v1/module.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/module.js +0 -14
- package/dist/document-models/subscription-instance/v1/src/index.d.ts +0 -2
- package/dist/document-models/subscription-instance/v1/src/index.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/src/index.js +0 -1
- package/dist/document-models/subscription-instance/v1/src/reducers/customer.d.ts +0 -3
- package/dist/document-models/subscription-instance/v1/src/reducers/customer.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/src/reducers/customer.js +0 -9
- package/dist/document-models/subscription-instance/v1/src/reducers/metrics.d.ts +0 -3
- package/dist/document-models/subscription-instance/v1/src/reducers/metrics.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/src/reducers/metrics.js +0 -97
- package/dist/document-models/subscription-instance/v1/src/reducers/service-group.d.ts +0 -3
- package/dist/document-models/subscription-instance/v1/src/reducers/service-group.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/src/reducers/service-group.js +0 -133
- package/dist/document-models/subscription-instance/v1/src/reducers/service.d.ts +0 -3
- package/dist/document-models/subscription-instance/v1/src/reducers/service.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/src/reducers/service.js +0 -155
- package/dist/document-models/subscription-instance/v1/src/reducers/subscription.d.ts +0 -3
- package/dist/document-models/subscription-instance/v1/src/reducers/subscription.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/src/reducers/subscription.js +0 -275
- package/dist/document-models/subscription-instance/v1/src/reducers/utils.d.ts +0 -7
- package/dist/document-models/subscription-instance/v1/src/reducers/utils.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/src/reducers/utils.js +0 -15
- package/dist/document-models/subscription-instance/v1/src/utils.d.ts +0 -2
- package/dist/document-models/subscription-instance/v1/src/utils.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/src/utils.js +0 -1
- package/dist/document-models/subscription-instance/v1/tests/customer.test.d.ts +0 -2
- package/dist/document-models/subscription-instance/v1/tests/customer.test.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/tests/customer.test.js +0 -25
- package/dist/document-models/subscription-instance/v1/tests/document-model.test.d.ts +0 -10
- package/dist/document-models/subscription-instance/v1/tests/document-model.test.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/tests/document-model.test.js +0 -104
- package/dist/document-models/subscription-instance/v1/tests/metrics.test.d.ts +0 -2
- package/dist/document-models/subscription-instance/v1/tests/metrics.test.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/tests/metrics.test.js +0 -152
- package/dist/document-models/subscription-instance/v1/tests/service-group.test.d.ts +0 -2
- package/dist/document-models/subscription-instance/v1/tests/service-group.test.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/tests/service-group.test.js +0 -55
- package/dist/document-models/subscription-instance/v1/tests/service.test.d.ts +0 -2
- package/dist/document-models/subscription-instance/v1/tests/service.test.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/tests/service.test.js +0 -95
- package/dist/document-models/subscription-instance/v1/tests/subscription.test.d.ts +0 -2
- package/dist/document-models/subscription-instance/v1/tests/subscription.test.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/tests/subscription.test.js +0 -175
- package/dist/document-models/subscription-instance/v1/utils.d.ts +0 -14
- package/dist/document-models/subscription-instance/v1/utils.d.ts.map +0 -1
- package/dist/document-models/subscription-instance/v1/utils.js +0 -7
- package/dist/document-models/upgrade-manifests.d.ts +0 -3
- package/dist/document-models/upgrade-manifests.d.ts.map +0 -1
- package/dist/document-models/upgrade-manifests.js +0 -12
- package/dist/editors/editors.d.ts +0 -3
- package/dist/editors/editors.d.ts.map +0 -1
- package/dist/editors/editors.js +0 -10
- package/dist/editors/index.d.ts +0 -5
- package/dist/editors/index.d.ts.map +0 -1
- package/dist/editors/index.js +0 -4
- package/dist/editors/resource-instance-editor/components/OperatorProfilePanel.d.ts +0 -11
- package/dist/editors/resource-instance-editor/components/OperatorProfilePanel.d.ts.map +0 -1
- package/dist/editors/resource-instance-editor/components/OperatorProfilePanel.js +0 -28
- package/dist/editors/resource-instance-editor/editor.d.ts +0 -2
- package/dist/editors/resource-instance-editor/editor.d.ts.map +0 -1
- package/dist/editors/resource-instance-editor/editor.js +0 -1301
- package/dist/editors/resource-instance-editor/hooks/useBuilderProfiles.d.ts +0 -15
- package/dist/editors/resource-instance-editor/hooks/useBuilderProfiles.d.ts.map +0 -1
- package/dist/editors/resource-instance-editor/hooks/useBuilderProfiles.js +0 -85
- package/dist/editors/resource-instance-editor/module.d.ts +0 -4
- package/dist/editors/resource-instance-editor/module.d.ts.map +0 -1
- package/dist/editors/resource-instance-editor/module.js +0 -10
- package/dist/editors/resource-instance-editor/types.d.ts +0 -2
- package/dist/editors/resource-instance-editor/types.d.ts.map +0 -1
- package/dist/editors/resource-instance-editor/types.js +0 -1
- package/dist/editors/resource-instance-editor/utils/graphql-client.d.ts +0 -6
- package/dist/editors/resource-instance-editor/utils/graphql-client.d.ts.map +0 -1
- package/dist/editors/resource-instance-editor/utils/graphql-client.js +0 -5
- package/dist/editors/resource-template-editor/components/FacetTargeting.d.ts +0 -9
- package/dist/editors/resource-template-editor/components/FacetTargeting.d.ts.map +0 -1
- package/dist/editors/resource-template-editor/components/FacetTargeting.js +0 -958
- package/dist/editors/resource-template-editor/components/TemplateInfo.d.ts +0 -9
- package/dist/editors/resource-template-editor/components/TemplateInfo.d.ts.map +0 -1
- package/dist/editors/resource-template-editor/components/TemplateInfo.js +0 -2217
- package/dist/editors/resource-template-editor/components/markdown-editor.d.ts +0 -12
- package/dist/editors/resource-template-editor/components/markdown-editor.d.ts.map +0 -1
- package/dist/editors/resource-template-editor/components/markdown-editor.js +0 -130
- package/dist/editors/resource-template-editor/editor.d.ts +0 -2
- package/dist/editors/resource-template-editor/editor.d.ts.map +0 -1
- package/dist/editors/resource-template-editor/editor.js +0 -146
- package/dist/editors/resource-template-editor/module.d.ts +0 -4
- package/dist/editors/resource-template-editor/module.d.ts.map +0 -1
- package/dist/editors/resource-template-editor/module.js +0 -10
- package/dist/editors/service-offering-editor/components/ConfirmDialog.d.ts +0 -12
- package/dist/editors/service-offering-editor/components/ConfirmDialog.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/ConfirmDialog.js +0 -20
- package/dist/editors/service-offering-editor/components/EditName.d.ts +0 -3
- package/dist/editors/service-offering-editor/components/EditName.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/EditName.js +0 -31
- package/dist/editors/service-offering-editor/components/InfoIcon.d.ts +0 -8
- package/dist/editors/service-offering-editor/components/InfoIcon.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/InfoIcon.js +0 -5
- package/dist/editors/service-offering-editor/components/MarkdownPreview.d.ts +0 -8
- package/dist/editors/service-offering-editor/components/MarkdownPreview.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/MarkdownPreview.js +0 -47
- package/dist/editors/service-offering-editor/components/OfferingProgress.d.ts +0 -13
- package/dist/editors/service-offering-editor/components/OfferingProgress.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/OfferingProgress.js +0 -228
- package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.d.ts +0 -9
- package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/ResourceTemplateSelector.js +0 -485
- package/dist/editors/service-offering-editor/components/ServiceCatalog.d.ts +0 -9
- package/dist/editors/service-offering-editor/components/ServiceCatalog.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/ServiceCatalog.js +0 -928
- package/dist/editors/service-offering-editor/components/TheMatrix.d.ts +0 -9
- package/dist/editors/service-offering-editor/components/TheMatrix.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/TheMatrix.js +0 -1392
- package/dist/editors/service-offering-editor/components/TierDefinition.d.ts +0 -9
- package/dist/editors/service-offering-editor/components/TierDefinition.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/TierDefinition.js +0 -230
- package/dist/editors/service-offering-editor/components/TierPricingOptionsPanel.d.ts +0 -11
- package/dist/editors/service-offering-editor/components/TierPricingOptionsPanel.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/TierPricingOptionsPanel.js +0 -58
- package/dist/editors/service-offering-editor/components/pricing-utils.d.ts +0 -38
- package/dist/editors/service-offering-editor/components/pricing-utils.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/components/pricing-utils.js +0 -140
- package/dist/editors/service-offering-editor/editor.css +0 -119
- package/dist/editors/service-offering-editor/editor.d.ts +0 -4
- package/dist/editors/service-offering-editor/editor.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/editor.js +0 -79
- package/dist/editors/service-offering-editor/hooks/useRemoteResourceTemplates.d.ts +0 -17
- package/dist/editors/service-offering-editor/hooks/useRemoteResourceTemplates.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/hooks/useRemoteResourceTemplates.js +0 -49
- package/dist/editors/service-offering-editor/hooks/useServiceOfferingDocument.d.ts +0 -13
- package/dist/editors/service-offering-editor/hooks/useServiceOfferingDocument.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/hooks/useServiceOfferingDocument.js +0 -36
- package/dist/editors/service-offering-editor/module.d.ts +0 -4
- package/dist/editors/service-offering-editor/module.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/module.js +0 -10
- package/dist/editors/service-offering-editor/utils/graphql-client.d.ts +0 -6
- package/dist/editors/service-offering-editor/utils/graphql-client.d.ts.map +0 -1
- package/dist/editors/service-offering-editor/utils/graphql-client.js +0 -5
- package/dist/editors/subscription-instance-editor/components/BillingPanel.d.ts +0 -11
- package/dist/editors/subscription-instance-editor/components/BillingPanel.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/BillingPanel.js +0 -50
- package/dist/editors/subscription-instance-editor/components/CustomerInfo.d.ts +0 -11
- package/dist/editors/subscription-instance-editor/components/CustomerInfo.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/CustomerInfo.js +0 -56
- package/dist/editors/subscription-instance-editor/components/ImportServiceConfigButton.d.ts +0 -17
- package/dist/editors/subscription-instance-editor/components/ImportServiceConfigButton.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/ImportServiceConfigButton.js +0 -37
- package/dist/editors/subscription-instance-editor/components/MetricActions.d.ts +0 -21
- package/dist/editors/subscription-instance-editor/components/MetricActions.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/MetricActions.js +0 -71
- package/dist/editors/subscription-instance-editor/components/MockDataButton.d.ts +0 -9
- package/dist/editors/subscription-instance-editor/components/MockDataButton.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/MockDataButton.js +0 -254
- package/dist/editors/subscription-instance-editor/components/ModeToggle.d.ts +0 -8
- package/dist/editors/subscription-instance-editor/components/ModeToggle.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/ModeToggle.js +0 -4
- package/dist/editors/subscription-instance-editor/components/OperatorNotes.d.ts +0 -9
- package/dist/editors/subscription-instance-editor/components/OperatorNotes.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/OperatorNotes.js +0 -17
- package/dist/editors/subscription-instance-editor/components/ServicesPanel.d.ts +0 -11
- package/dist/editors/subscription-instance-editor/components/ServicesPanel.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/ServicesPanel.js +0 -40
- package/dist/editors/subscription-instance-editor/components/StatusBadge.d.ts +0 -7
- package/dist/editors/subscription-instance-editor/components/StatusBadge.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/StatusBadge.js +0 -26
- package/dist/editors/subscription-instance-editor/components/SubscriptionActions.d.ts +0 -11
- package/dist/editors/subscription-instance-editor/components/SubscriptionActions.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/SubscriptionActions.js +0 -87
- package/dist/editors/subscription-instance-editor/components/SubscriptionHeader.d.ts +0 -11
- package/dist/editors/subscription-instance-editor/components/SubscriptionHeader.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/SubscriptionHeader.js +0 -51
- package/dist/editors/subscription-instance-editor/components/billing-utils.d.ts +0 -61
- package/dist/editors/subscription-instance-editor/components/billing-utils.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/billing-utils.js +0 -169
- package/dist/editors/subscription-instance-editor/components/mapOfferingToSubscription.d.ts +0 -32
- package/dist/editors/subscription-instance-editor/components/mapOfferingToSubscription.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/components/mapOfferingToSubscription.js +0 -202
- package/dist/editors/subscription-instance-editor/editor.d.ts +0 -2
- package/dist/editors/subscription-instance-editor/editor.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/editor.js +0 -2589
- package/dist/editors/subscription-instance-editor/module.d.ts +0 -4
- package/dist/editors/subscription-instance-editor/module.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/module.js +0 -10
- package/dist/editors/subscription-instance-editor/types.d.ts +0 -3
- package/dist/editors/subscription-instance-editor/types.d.ts.map +0 -1
- package/dist/editors/subscription-instance-editor/types.js +0 -1
- package/dist/editors/utils/graphql-client.d.ts +0 -83
- package/dist/editors/utils/graphql-client.d.ts.map +0 -1
- package/dist/editors/utils/graphql-client.js +0 -197
- package/dist/index.d.ts +0 -7
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -6
- package/dist/powerhouse.manifest.json +0 -69
- package/dist/processors/factory.d.ts +0 -8
- package/dist/processors/factory.d.ts.map +0 -1
- package/dist/processors/factory.js +0 -39
- package/dist/processors/index.d.ts +0 -6
- package/dist/processors/index.d.ts.map +0 -1
- package/dist/processors/index.js +0 -5
- package/dist/style.css +0 -3562
- package/dist/subgraphs/index.d.ts +0 -2
- package/dist/subgraphs/index.d.ts.map +0 -1
- package/dist/subgraphs/index.js +0 -1
- package/dist/subgraphs/resources-services/index.d.ts +0 -11
- package/dist/subgraphs/resources-services/index.d.ts.map +0 -1
- package/dist/subgraphs/resources-services/index.js +0 -11
- package/dist/subgraphs/resources-services/resolvers.d.ts +0 -3
- package/dist/subgraphs/resources-services/resolvers.d.ts.map +0 -1
- package/dist/subgraphs/resources-services/resolvers.js +0 -732
- package/dist/subgraphs/resources-services/schema.d.ts +0 -3
- package/dist/subgraphs/resources-services/schema.d.ts.map +0 -1
- package/dist/subgraphs/resources-services/schema.js +0 -348
- package/dist/vite.config.d.ts +0 -3
- package/dist/vite.config.d.ts.map +0 -1
- package/dist/vite.config.js +0 -13
|
@@ -1,928 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useMemo, useEffect } from "react";
|
|
3
|
-
import { generateId } from "document-model/core";
|
|
4
|
-
import { BILLING_CYCLE_SHORT_LABELS, BILLING_CYCLE_MONTHS, formatPrice, calculateEffectiveSetupPrice, } from "./pricing-utils.js";
|
|
5
|
-
import { addService, updateService, deleteService, addOptionGroup, updateOptionGroup, deleteOptionGroup, addServiceLevel, removeServiceLevel, setOptionGroupStandalonePricing, addOptionGroupTierPricing, updateOptionGroupTierPricing, } from "../../../document-models/service-offering/v1/gen/creators.js";
|
|
6
|
-
import { InfoIcon } from "./InfoIcon.js";
|
|
7
|
-
import { ConfirmDialog } from "./ConfirmDialog.js";
|
|
8
|
-
const SERVICE_TEMPLATES = {
|
|
9
|
-
"Setup & Formation": [
|
|
10
|
-
{
|
|
11
|
-
title: "Swiss association entity",
|
|
12
|
-
description: "Legal entity formation as a Swiss association",
|
|
13
|
-
category: "setup",
|
|
14
|
-
icon: "🏛️",
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
title: "Registered address (Zug)",
|
|
18
|
-
description: "Official registered address in Zug, Switzerland",
|
|
19
|
-
category: "setup",
|
|
20
|
-
icon: "📍",
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
title: "Legal document templates",
|
|
24
|
-
description: "Access to standardized legal document templates",
|
|
25
|
-
category: "setup",
|
|
26
|
-
icon: "📋",
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
"Operations & Finance": [
|
|
30
|
-
{
|
|
31
|
-
title: "Invoice management",
|
|
32
|
-
description: "Professional invoice processing and management",
|
|
33
|
-
category: "recurring",
|
|
34
|
-
icon: "📄",
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
title: "Annual tax filing",
|
|
38
|
-
description: "Yearly tax preparation and filing services",
|
|
39
|
-
category: "recurring",
|
|
40
|
-
icon: "💰",
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
title: "Monthly accounting & close",
|
|
44
|
-
description: "Monthly bookkeeping and financial close",
|
|
45
|
-
category: "recurring",
|
|
46
|
-
icon: "📊",
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
"Contributor & Payments": [
|
|
50
|
-
{
|
|
51
|
-
title: "Contributor operations",
|
|
52
|
-
description: "Management of contributor payments and operations",
|
|
53
|
-
category: "recurring",
|
|
54
|
-
icon: "👥",
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
title: "Multi-currency payouts",
|
|
58
|
-
description: "Support for payments in multiple currencies",
|
|
59
|
-
category: "recurring",
|
|
60
|
-
icon: "💱",
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
title: "Multiple entities",
|
|
64
|
-
description: "Support for managing multiple legal entities",
|
|
65
|
-
category: "recurring",
|
|
66
|
-
icon: "🏢",
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
"Support & Advisory": [
|
|
70
|
-
{
|
|
71
|
-
title: "Dedicated ops support",
|
|
72
|
-
description: "Dedicated operations support team",
|
|
73
|
-
category: "addon",
|
|
74
|
-
icon: "🎯",
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
title: "Dedicated account manager",
|
|
78
|
-
description: "Personal point of contact for all needs",
|
|
79
|
-
category: "addon",
|
|
80
|
-
icon: "👤",
|
|
81
|
-
},
|
|
82
|
-
],
|
|
83
|
-
};
|
|
84
|
-
const fontSans = { fontFamily: "'DM Sans', system-ui, sans-serif" };
|
|
85
|
-
const fontMono = { fontFamily: "'DM Mono', 'SF Mono', monospace" };
|
|
86
|
-
export function ServiceCatalog({ document, dispatch }) {
|
|
87
|
-
const { state } = document;
|
|
88
|
-
const services = state.global.services ?? [];
|
|
89
|
-
const optionGroups = state.global.optionGroups ?? [];
|
|
90
|
-
const tiers = state.global.tiers ?? [];
|
|
91
|
-
// Local UI state
|
|
92
|
-
const [selectedGroupId, setSelectedGroupId] = useState(null);
|
|
93
|
-
const [isAddingService, setIsAddingService] = useState(false);
|
|
94
|
-
const [newService, setNewService] = useState({ title: "", description: "" });
|
|
95
|
-
const [selectedTierIds, setSelectedTierIds] = useState(new Set());
|
|
96
|
-
// Edit group modal state
|
|
97
|
-
const [editingGroup, setEditingGroup] = useState(null);
|
|
98
|
-
const [editGroupName, setEditGroupName] = useState("");
|
|
99
|
-
const [editGroupType, setEditGroupType] = useState("recurring");
|
|
100
|
-
const [editGroupPrice, setEditGroupPrice] = useState("");
|
|
101
|
-
const [editGroupBillingCycles, setEditGroupBillingCycles] = useState(["MONTHLY"]);
|
|
102
|
-
const [editGroupPricingMode, setEditGroupPricingMode] = useState(null);
|
|
103
|
-
const [editGroupSetupCost, setEditGroupSetupCost] = useState("");
|
|
104
|
-
const [editGroupBasePrice, setEditGroupBasePrice] = useState("");
|
|
105
|
-
const [editGroupDiscounts, setEditGroupDiscounts] = useState({
|
|
106
|
-
MONTHLY: "",
|
|
107
|
-
QUARTERLY: "",
|
|
108
|
-
SEMI_ANNUAL: "",
|
|
109
|
-
ANNUAL: "",
|
|
110
|
-
ONE_TIME: "",
|
|
111
|
-
});
|
|
112
|
-
// Per-tier pricing state for edit modal
|
|
113
|
-
const [editTierTab, setEditTierTab] = useState(null);
|
|
114
|
-
const [editTierPrices, setEditTierPrices] = useState({});
|
|
115
|
-
const [editTierSetupCosts, setEditTierSetupCosts] = useState({});
|
|
116
|
-
const [editTierDiscounts, setEditTierDiscounts] = useState({});
|
|
117
|
-
// Per-tier setup fee discounts: tierId → billingCycle → { discountType, discountValue }
|
|
118
|
-
const [editSetupTierDiscounts, setEditSetupTierDiscounts] = useState({});
|
|
119
|
-
// Service templates quick-add state
|
|
120
|
-
const [showServiceTemplates, setShowServiceTemplates] = useState(false);
|
|
121
|
-
// Destructive action confirmation state
|
|
122
|
-
const [pendingDeleteGroupId, setPendingDeleteGroupId] = useState(null);
|
|
123
|
-
const [pendingDeleteServiceId, setPendingDeleteServiceId] = useState(null);
|
|
124
|
-
// Get services that belong to a specific group (via service.optionGroupId)
|
|
125
|
-
const getServicesForGroup = (groupId) => {
|
|
126
|
-
return services.filter((s) => s.optionGroupId === groupId);
|
|
127
|
-
};
|
|
128
|
-
// Get ungrouped services (services without an optionGroupId)
|
|
129
|
-
const ungroupedServices = useMemo(() => {
|
|
130
|
-
return services.filter((s) => !s.optionGroupId);
|
|
131
|
-
}, [services]);
|
|
132
|
-
// Categorize option groups based on schema costType
|
|
133
|
-
const setupGroups = useMemo(() => {
|
|
134
|
-
return optionGroups.filter((g) => g.costType === "SETUP");
|
|
135
|
-
}, [optionGroups]);
|
|
136
|
-
const regularGroups = useMemo(() => {
|
|
137
|
-
return optionGroups.filter((g) => g.costType !== "SETUP" && !g.isAddOn);
|
|
138
|
-
}, [optionGroups]);
|
|
139
|
-
const addonGroups = useMemo(() => {
|
|
140
|
-
return optionGroups.filter((g) => g.isAddOn);
|
|
141
|
-
}, [optionGroups]);
|
|
142
|
-
const handleAddNewGroup = () => {
|
|
143
|
-
const groupId = generateId();
|
|
144
|
-
const inheritedCycles = state.global.availableBillingCycles?.length > 0
|
|
145
|
-
? [...state.global.availableBillingCycles]
|
|
146
|
-
: ["MONTHLY"];
|
|
147
|
-
dispatch(addOptionGroup({
|
|
148
|
-
id: groupId,
|
|
149
|
-
name: "New Group",
|
|
150
|
-
isAddOn: false,
|
|
151
|
-
defaultSelected: true,
|
|
152
|
-
costType: "RECURRING",
|
|
153
|
-
availableBillingCycles: inheritedCycles,
|
|
154
|
-
lastModified: new Date().toISOString(),
|
|
155
|
-
}));
|
|
156
|
-
// Construct minimal group shape to open Edit modal immediately
|
|
157
|
-
// (handleOpenEditGroup reads from the group object, not from state)
|
|
158
|
-
const newGroup = {
|
|
159
|
-
id: groupId,
|
|
160
|
-
name: "New Group",
|
|
161
|
-
isAddOn: false,
|
|
162
|
-
defaultSelected: true,
|
|
163
|
-
costType: "RECURRING",
|
|
164
|
-
availableBillingCycles: inheritedCycles,
|
|
165
|
-
price: null,
|
|
166
|
-
pricingMode: null,
|
|
167
|
-
standalonePricing: null,
|
|
168
|
-
tierDependentPricing: [],
|
|
169
|
-
billingCycleDiscounts: [],
|
|
170
|
-
services: [],
|
|
171
|
-
};
|
|
172
|
-
handleOpenEditGroup(newGroup);
|
|
173
|
-
setSelectedGroupId(groupId);
|
|
174
|
-
};
|
|
175
|
-
const handleDeleteGroup = (groupId) => {
|
|
176
|
-
setPendingDeleteGroupId(groupId);
|
|
177
|
-
};
|
|
178
|
-
const confirmDeleteGroup = () => {
|
|
179
|
-
if (!pendingDeleteGroupId)
|
|
180
|
-
return;
|
|
181
|
-
dispatch(deleteOptionGroup({
|
|
182
|
-
id: pendingDeleteGroupId,
|
|
183
|
-
lastModified: new Date().toISOString(),
|
|
184
|
-
}));
|
|
185
|
-
if (selectedGroupId === pendingDeleteGroupId) {
|
|
186
|
-
setSelectedGroupId(null);
|
|
187
|
-
}
|
|
188
|
-
setPendingDeleteGroupId(null);
|
|
189
|
-
};
|
|
190
|
-
const handleOpenEditGroup = (group) => {
|
|
191
|
-
setEditingGroup(group);
|
|
192
|
-
setEditGroupName(group.name);
|
|
193
|
-
const groupType = group.costType === "SETUP"
|
|
194
|
-
? "setup"
|
|
195
|
-
: group.isAddOn
|
|
196
|
-
? "addon"
|
|
197
|
-
: "recurring";
|
|
198
|
-
setEditGroupType(groupType);
|
|
199
|
-
setEditGroupPrice(group.price?.toString() || "");
|
|
200
|
-
// Initialize per-tier setup fee discounts from tier-dependent pricing
|
|
201
|
-
const SUBSCRIPTION_CYCLES = [
|
|
202
|
-
"MONTHLY",
|
|
203
|
-
"QUARTERLY",
|
|
204
|
-
"SEMI_ANNUAL",
|
|
205
|
-
"ANNUAL",
|
|
206
|
-
];
|
|
207
|
-
const setupTierDiscounts = {};
|
|
208
|
-
for (const tier of tiers) {
|
|
209
|
-
const emptyDiscounts = Object.fromEntries(SUBSCRIPTION_CYCLES.map((c) => [
|
|
210
|
-
c,
|
|
211
|
-
{ discountType: "PERCENTAGE", discountValue: "" },
|
|
212
|
-
]));
|
|
213
|
-
const tierPricingEntry = group.tierDependentPricing?.find((tp) => tp.tierId === tier.id);
|
|
214
|
-
if (tierPricingEntry?.setupCostDiscounts) {
|
|
215
|
-
tierPricingEntry.setupCostDiscounts.forEach((d) => {
|
|
216
|
-
if (d.billingCycle && d.discountRule) {
|
|
217
|
-
emptyDiscounts[d.billingCycle] = {
|
|
218
|
-
discountType: d.discountRule.discountType,
|
|
219
|
-
discountValue: d.discountRule.discountValue?.toString() || "",
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
setupTierDiscounts[tier.id] = emptyDiscounts;
|
|
225
|
-
}
|
|
226
|
-
setEditSetupTierDiscounts(setupTierDiscounts);
|
|
227
|
-
setEditGroupBillingCycles(group.availableBillingCycles?.length > 0
|
|
228
|
-
? group.availableBillingCycles
|
|
229
|
-
: ["MONTHLY"]);
|
|
230
|
-
// Determine pricing mode: regular groups always per-tier, add-ons use their mode
|
|
231
|
-
const isRegular = groupType === "recurring";
|
|
232
|
-
if (isRegular && tiers.length > 0) {
|
|
233
|
-
setEditGroupPricingMode("TIER_DEPENDENT");
|
|
234
|
-
}
|
|
235
|
-
else if (group.isAddOn) {
|
|
236
|
-
setEditGroupPricingMode(group.pricingMode || "STANDALONE");
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
setEditGroupPricingMode("STANDALONE");
|
|
240
|
-
}
|
|
241
|
-
// Initialize standalone pricing (for add-ons in STANDALONE mode or fallback)
|
|
242
|
-
setEditGroupSetupCost(group.standalonePricing?.setupCost?.amount?.toString() || "");
|
|
243
|
-
const monthlyPricing = group.standalonePricing?.recurringPricing?.find((p) => p.billingCycle === "MONTHLY");
|
|
244
|
-
setEditGroupBasePrice(monthlyPricing?.amount?.toString() || "");
|
|
245
|
-
// Initialize per-group billing cycle discounts (flat amount only)
|
|
246
|
-
const discounts = {
|
|
247
|
-
MONTHLY: "",
|
|
248
|
-
QUARTERLY: "",
|
|
249
|
-
SEMI_ANNUAL: "",
|
|
250
|
-
ANNUAL: "",
|
|
251
|
-
ONE_TIME: "",
|
|
252
|
-
};
|
|
253
|
-
group.billingCycleDiscounts?.forEach((d) => {
|
|
254
|
-
if (d.billingCycle && d.discountRule?.discountValue) {
|
|
255
|
-
discounts[d.billingCycle] = d.discountRule.discountValue.toString();
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
setEditGroupDiscounts(discounts);
|
|
259
|
-
// Initialize per-tier pricing state
|
|
260
|
-
const tierPrices = {};
|
|
261
|
-
const tierSetupCosts = {};
|
|
262
|
-
const tierDiscounts = {};
|
|
263
|
-
for (const tier of tiers) {
|
|
264
|
-
const tierPricingEntry = group.tierDependentPricing?.find((tp) => tp.tierId === tier.id);
|
|
265
|
-
const tierMonthlyPricing = tierPricingEntry?.recurringPricing?.find((p) => p.billingCycle === "MONTHLY");
|
|
266
|
-
// If no tier pricing exists but group has standalone pricing, use standalone as starting point
|
|
267
|
-
if (tierPricingEntry) {
|
|
268
|
-
tierPrices[tier.id] = tierMonthlyPricing?.amount?.toString() || "";
|
|
269
|
-
tierSetupCosts[tier.id] =
|
|
270
|
-
tierPricingEntry.setupCost?.amount?.toString() || "";
|
|
271
|
-
}
|
|
272
|
-
else if (monthlyPricing) {
|
|
273
|
-
// Pre-fill from standalone as migration aid
|
|
274
|
-
tierPrices[tier.id] = monthlyPricing.amount?.toString() || "";
|
|
275
|
-
tierSetupCosts[tier.id] =
|
|
276
|
-
group.standalonePricing?.setupCost?.amount?.toString() || "";
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
tierPrices[tier.id] = "";
|
|
280
|
-
tierSetupCosts[tier.id] = "";
|
|
281
|
-
}
|
|
282
|
-
// Per-tier discounts: populate from tierDependentPricing[].recurringPricing[].discount
|
|
283
|
-
const tierDiscountValues = {
|
|
284
|
-
MONTHLY: "",
|
|
285
|
-
QUARTERLY: "",
|
|
286
|
-
SEMI_ANNUAL: "",
|
|
287
|
-
ANNUAL: "",
|
|
288
|
-
ONE_TIME: "",
|
|
289
|
-
};
|
|
290
|
-
if (tierPricingEntry) {
|
|
291
|
-
tierPricingEntry.recurringPricing?.forEach((rp) => {
|
|
292
|
-
if (rp.discount && rp.discount.discountValue > 0) {
|
|
293
|
-
tierDiscountValues[rp.billingCycle] =
|
|
294
|
-
rp.discount.discountValue.toString();
|
|
295
|
-
}
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
tierDiscounts[tier.id] = tierDiscountValues;
|
|
299
|
-
}
|
|
300
|
-
setEditTierPrices(tierPrices);
|
|
301
|
-
setEditTierSetupCosts(tierSetupCosts);
|
|
302
|
-
setEditTierDiscounts(tierDiscounts);
|
|
303
|
-
setEditTierTab(tiers.length > 0 ? tiers[0].id : null);
|
|
304
|
-
};
|
|
305
|
-
const handleSaveGroupEdit = () => {
|
|
306
|
-
if (!editingGroup || !editGroupName.trim())
|
|
307
|
-
return;
|
|
308
|
-
const isSetup = editGroupType === "setup";
|
|
309
|
-
const isAddOn = editGroupType === "addon";
|
|
310
|
-
const costType = isSetup ? "SETUP" : "RECURRING";
|
|
311
|
-
const price = editGroupPrice ? parseFloat(editGroupPrice) : null;
|
|
312
|
-
// Update the option group in the document
|
|
313
|
-
dispatch(updateOptionGroup({
|
|
314
|
-
id: editingGroup.id,
|
|
315
|
-
name: editGroupName.trim(),
|
|
316
|
-
isAddOn,
|
|
317
|
-
defaultSelected: !isAddOn,
|
|
318
|
-
costType,
|
|
319
|
-
availableBillingCycles: isSetup ? ["ONE_TIME"] : editGroupBillingCycles,
|
|
320
|
-
price: price ?? undefined,
|
|
321
|
-
currency: price ? "USD" : undefined,
|
|
322
|
-
lastModified: new Date().toISOString(),
|
|
323
|
-
}));
|
|
324
|
-
// Save setup pricing: base cost via standalone, per-tier discounts via tier pricing
|
|
325
|
-
if (isSetup && price && price > 0) {
|
|
326
|
-
const now = new Date().toISOString();
|
|
327
|
-
// Store base setup cost via standalone pricing
|
|
328
|
-
dispatch(setOptionGroupStandalonePricing({
|
|
329
|
-
optionGroupId: editingGroup.id,
|
|
330
|
-
setupCost: { amount: price, currency: "USD" },
|
|
331
|
-
recurringPricing: [],
|
|
332
|
-
lastModified: now,
|
|
333
|
-
}));
|
|
334
|
-
// Store per-tier setup fee discounts
|
|
335
|
-
for (const tier of tiers) {
|
|
336
|
-
if (tier.isCustomPricing)
|
|
337
|
-
continue;
|
|
338
|
-
const tierDiscountEntries = editSetupTierDiscounts[tier.id];
|
|
339
|
-
const setupCostDiscounts = Object.entries(tierDiscountEntries || {})
|
|
340
|
-
.filter(([, d]) => parseFloat(d.discountValue) > 0)
|
|
341
|
-
.map(([cycle, d]) => ({
|
|
342
|
-
billingCycle: cycle,
|
|
343
|
-
discountRule: {
|
|
344
|
-
discountType: "PERCENTAGE",
|
|
345
|
-
discountValue: parseFloat(d.discountValue),
|
|
346
|
-
},
|
|
347
|
-
}));
|
|
348
|
-
const existingTierPricing = editingGroup.tierDependentPricing?.find((tp) => tp.tierId === tier.id);
|
|
349
|
-
if (existingTierPricing) {
|
|
350
|
-
dispatch(updateOptionGroupTierPricing({
|
|
351
|
-
optionGroupId: editingGroup.id,
|
|
352
|
-
tierId: tier.id,
|
|
353
|
-
setupCost: { amount: price, currency: "USD" },
|
|
354
|
-
setupCostDiscounts,
|
|
355
|
-
recurringPricing: [],
|
|
356
|
-
lastModified: now,
|
|
357
|
-
}));
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
dispatch(addOptionGroupTierPricing({
|
|
361
|
-
optionGroupId: editingGroup.id,
|
|
362
|
-
tierPricingId: generateId(),
|
|
363
|
-
tierId: tier.id,
|
|
364
|
-
setupCost: { amount: price, currency: "USD" },
|
|
365
|
-
setupCostDiscounts,
|
|
366
|
-
recurringPricing: [],
|
|
367
|
-
lastModified: now,
|
|
368
|
-
}));
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
// Save pricing based on mode
|
|
373
|
-
if (!isSetup && editGroupPricingMode === "TIER_DEPENDENT") {
|
|
374
|
-
// Per-tier pricing: dispatch addOptionGroupTierPricing or updateOptionGroupTierPricing per tier
|
|
375
|
-
const now = new Date().toISOString();
|
|
376
|
-
for (const tier of tiers) {
|
|
377
|
-
if (tier.isCustomPricing)
|
|
378
|
-
continue; // Skip custom tiers
|
|
379
|
-
const baseMonthly = parseFloat(editTierPrices[tier.id]) || 0;
|
|
380
|
-
const setupCostVal = parseFloat(editTierSetupCosts[tier.id]) || 0;
|
|
381
|
-
const setupCost = setupCostVal > 0
|
|
382
|
-
? { amount: setupCostVal, currency: "USD" }
|
|
383
|
-
: undefined;
|
|
384
|
-
const recurringPricing = editGroupBillingCycles
|
|
385
|
-
.filter(() => baseMonthly > 0)
|
|
386
|
-
.map((cycle) => {
|
|
387
|
-
const discountPct = parseFloat(editTierDiscounts[tier.id]?.[cycle] || "0") || 0;
|
|
388
|
-
return {
|
|
389
|
-
id: generateId(),
|
|
390
|
-
billingCycle: cycle,
|
|
391
|
-
amount: baseMonthly,
|
|
392
|
-
currency: "USD",
|
|
393
|
-
discount: discountPct > 0
|
|
394
|
-
? {
|
|
395
|
-
discountType: "PERCENTAGE",
|
|
396
|
-
discountValue: discountPct,
|
|
397
|
-
}
|
|
398
|
-
: undefined,
|
|
399
|
-
};
|
|
400
|
-
});
|
|
401
|
-
const existingTierPricing = editingGroup.tierDependentPricing?.find((tp) => tp.tierId === tier.id);
|
|
402
|
-
if (existingTierPricing) {
|
|
403
|
-
dispatch(updateOptionGroupTierPricing({
|
|
404
|
-
optionGroupId: editingGroup.id,
|
|
405
|
-
tierId: tier.id,
|
|
406
|
-
setupCost,
|
|
407
|
-
recurringPricing,
|
|
408
|
-
lastModified: now,
|
|
409
|
-
}));
|
|
410
|
-
}
|
|
411
|
-
else {
|
|
412
|
-
dispatch(addOptionGroupTierPricing({
|
|
413
|
-
optionGroupId: editingGroup.id,
|
|
414
|
-
tierPricingId: generateId(),
|
|
415
|
-
tierId: tier.id,
|
|
416
|
-
setupCost,
|
|
417
|
-
recurringPricing,
|
|
418
|
-
lastModified: now,
|
|
419
|
-
}));
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
else if (!isSetup && editGroupPricingMode === "STANDALONE") {
|
|
424
|
-
// Standalone pricing (add-ons or groups with no tiers)
|
|
425
|
-
const setupCost = editGroupSetupCost && parseFloat(editGroupSetupCost) > 0
|
|
426
|
-
? {
|
|
427
|
-
amount: parseFloat(editGroupSetupCost),
|
|
428
|
-
currency: "USD",
|
|
429
|
-
}
|
|
430
|
-
: undefined;
|
|
431
|
-
const baseMonthly = parseFloat(editGroupBasePrice) || 0;
|
|
432
|
-
const recurringPricing = editGroupBillingCycles
|
|
433
|
-
.filter(() => baseMonthly > 0)
|
|
434
|
-
.map((cycle) => ({
|
|
435
|
-
id: generateId(),
|
|
436
|
-
billingCycle: cycle,
|
|
437
|
-
amount: baseMonthly,
|
|
438
|
-
currency: "USD",
|
|
439
|
-
}));
|
|
440
|
-
const billingCycleDiscounts = editGroupBillingCycles
|
|
441
|
-
.map((cycle) => {
|
|
442
|
-
const discountPct = parseFloat(editGroupDiscounts[cycle]) || 0;
|
|
443
|
-
return {
|
|
444
|
-
billingCycle: cycle,
|
|
445
|
-
discountRule: {
|
|
446
|
-
discountType: "PERCENTAGE",
|
|
447
|
-
discountValue: discountPct,
|
|
448
|
-
},
|
|
449
|
-
};
|
|
450
|
-
})
|
|
451
|
-
.filter((d) => d.discountRule.discountValue > 0);
|
|
452
|
-
dispatch(setOptionGroupStandalonePricing({
|
|
453
|
-
optionGroupId: editingGroup.id,
|
|
454
|
-
setupCost,
|
|
455
|
-
recurringPricing,
|
|
456
|
-
billingCycleDiscounts,
|
|
457
|
-
lastModified: new Date().toISOString(),
|
|
458
|
-
}));
|
|
459
|
-
}
|
|
460
|
-
// Update all services in this group to reflect the new setup status
|
|
461
|
-
const groupServices = getServicesForGroup(editingGroup.id);
|
|
462
|
-
groupServices.forEach((service) => {
|
|
463
|
-
if (service.isSetupFormation !== isSetup) {
|
|
464
|
-
dispatch(updateService({
|
|
465
|
-
id: service.id,
|
|
466
|
-
isSetupFormation: isSetup,
|
|
467
|
-
lastModified: new Date().toISOString(),
|
|
468
|
-
}));
|
|
469
|
-
}
|
|
470
|
-
});
|
|
471
|
-
setEditingGroup(null);
|
|
472
|
-
};
|
|
473
|
-
const handleAddService = () => {
|
|
474
|
-
if (!newService.title.trim())
|
|
475
|
-
return;
|
|
476
|
-
const serviceId = generateId();
|
|
477
|
-
const now = new Date().toISOString();
|
|
478
|
-
// Determine if this is a setup service based on the selected group's costType
|
|
479
|
-
const isSetupFormation = selectedGroup?.costType === "SETUP";
|
|
480
|
-
// Add the service with optionGroupId directly on the service
|
|
481
|
-
dispatch(addService({
|
|
482
|
-
id: serviceId,
|
|
483
|
-
title: newService.title.trim(),
|
|
484
|
-
description: newService.description.trim() || undefined,
|
|
485
|
-
isSetupFormation,
|
|
486
|
-
optionGroupId: selectedGroupId || undefined,
|
|
487
|
-
lastModified: now,
|
|
488
|
-
}));
|
|
489
|
-
// Create ServiceLevelBindings for each selected tier
|
|
490
|
-
selectedTierIds.forEach((tierId) => {
|
|
491
|
-
dispatch(addServiceLevel({
|
|
492
|
-
serviceLevelId: generateId(),
|
|
493
|
-
serviceId,
|
|
494
|
-
tierId,
|
|
495
|
-
level: "INCLUDED",
|
|
496
|
-
optionGroupId: selectedGroupId || undefined,
|
|
497
|
-
lastModified: now,
|
|
498
|
-
}));
|
|
499
|
-
});
|
|
500
|
-
setNewService({ title: "", description: "" });
|
|
501
|
-
setSelectedTierIds(new Set());
|
|
502
|
-
setIsAddingService(false);
|
|
503
|
-
};
|
|
504
|
-
// Quick-add service from template (reduces activation energy)
|
|
505
|
-
const handleAddFromTemplate = (template) => {
|
|
506
|
-
if (!selectedGroupId)
|
|
507
|
-
return;
|
|
508
|
-
const serviceId = generateId();
|
|
509
|
-
const now = new Date().toISOString();
|
|
510
|
-
const isSetupFormation = selectedGroup?.costType === "SETUP";
|
|
511
|
-
dispatch(addService({
|
|
512
|
-
id: serviceId,
|
|
513
|
-
title: template.title,
|
|
514
|
-
description: template.description,
|
|
515
|
-
isSetupFormation,
|
|
516
|
-
optionGroupId: selectedGroupId,
|
|
517
|
-
lastModified: now,
|
|
518
|
-
}));
|
|
519
|
-
// Auto-include in all tiers for convenience (can be changed later)
|
|
520
|
-
tiers.forEach((tier) => {
|
|
521
|
-
dispatch(addServiceLevel({
|
|
522
|
-
serviceLevelId: generateId(),
|
|
523
|
-
serviceId,
|
|
524
|
-
tierId: tier.id,
|
|
525
|
-
level: "INCLUDED",
|
|
526
|
-
optionGroupId: selectedGroupId,
|
|
527
|
-
lastModified: now,
|
|
528
|
-
}));
|
|
529
|
-
});
|
|
530
|
-
setShowServiceTemplates(false);
|
|
531
|
-
};
|
|
532
|
-
const handleUpdateService = (service, updates) => {
|
|
533
|
-
dispatch(updateService({
|
|
534
|
-
id: service.id,
|
|
535
|
-
...updates,
|
|
536
|
-
lastModified: new Date().toISOString(),
|
|
537
|
-
}));
|
|
538
|
-
};
|
|
539
|
-
const handleToggleTier = (serviceId, tierId, isIncluded) => {
|
|
540
|
-
const now = new Date().toISOString();
|
|
541
|
-
const tier = tiers.find((t) => t.id === tierId);
|
|
542
|
-
if (!tier)
|
|
543
|
-
return;
|
|
544
|
-
// Find existing service level binding for this service-tier combo
|
|
545
|
-
const existingBinding = tier.serviceLevels.find((sl) => sl.serviceId === serviceId);
|
|
546
|
-
if (isIncluded) {
|
|
547
|
-
// Add or update service level binding
|
|
548
|
-
if (existingBinding) {
|
|
549
|
-
// Service level exists, might need to update it if level changed
|
|
550
|
-
// (for now we just use INCLUDED)
|
|
551
|
-
}
|
|
552
|
-
else {
|
|
553
|
-
// Create new service level binding
|
|
554
|
-
const service = services.find((s) => s.id === serviceId);
|
|
555
|
-
dispatch(addServiceLevel({
|
|
556
|
-
serviceLevelId: generateId(),
|
|
557
|
-
serviceId,
|
|
558
|
-
tierId,
|
|
559
|
-
level: "INCLUDED",
|
|
560
|
-
optionGroupId: service?.optionGroupId || undefined,
|
|
561
|
-
lastModified: now,
|
|
562
|
-
}));
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
else {
|
|
566
|
-
// Remove service level binding
|
|
567
|
-
if (existingBinding) {
|
|
568
|
-
dispatch(removeServiceLevel({
|
|
569
|
-
serviceLevelId: existingBinding.id,
|
|
570
|
-
tierId,
|
|
571
|
-
lastModified: now,
|
|
572
|
-
}));
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
};
|
|
576
|
-
const handleDeleteService = (serviceId) => {
|
|
577
|
-
setPendingDeleteServiceId(serviceId);
|
|
578
|
-
};
|
|
579
|
-
const confirmDeleteService = () => {
|
|
580
|
-
if (!pendingDeleteServiceId)
|
|
581
|
-
return;
|
|
582
|
-
dispatch(deleteService({
|
|
583
|
-
id: pendingDeleteServiceId,
|
|
584
|
-
lastModified: new Date().toISOString(),
|
|
585
|
-
}));
|
|
586
|
-
setPendingDeleteServiceId(null);
|
|
587
|
-
};
|
|
588
|
-
// Get displayed services based on selection
|
|
589
|
-
const displayedServices = useMemo(() => {
|
|
590
|
-
if (selectedGroupId) {
|
|
591
|
-
return getServicesForGroup(selectedGroupId);
|
|
592
|
-
}
|
|
593
|
-
return ungroupedServices;
|
|
594
|
-
}, [selectedGroupId, services, ungroupedServices]);
|
|
595
|
-
// Get selected group info
|
|
596
|
-
const selectedGroup = selectedGroupId
|
|
597
|
-
? optionGroups.find((g) => g.id === selectedGroupId)
|
|
598
|
-
: null;
|
|
599
|
-
return (_jsxs(_Fragment, { children: [editingGroup && (_jsx("div", { className: "fixed inset-0 bg-slate-900/50 flex items-center justify-center z-[1000]", style: { animation: "so-fade-in 150ms ease-out" }, onClick: () => setEditingGroup(null), children: _jsxs("div", { className: "bg-white rounded-xl shadow-xl w-full max-w-[420px] max-h-[90vh] flex flex-col", style: { animation: "so-scale-in 200ms ease-out" }, onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "flex items-center justify-between px-6 pt-5 pb-4 border-b border-slate-100", children: [_jsxs("h3", { className: "text-lg font-semibold text-slate-800 m-0 tracking-[-0.01em]", style: fontSans, children: ["Edit Group", _jsx(InfoIcon, { content: "Standalone: same price for all tiers. Tier-Dependent: different price per tier. Choose Tier-Dependent when you want to offer volume discounts at higher tiers." })] }), _jsx("button", { onClick: () => setEditingGroup(null), className: "w-8 h-8 rounded-[10px] bg-transparent border-none text-slate-400 cursor-pointer flex items-center justify-center transition-all duration-150 hover:bg-slate-100 hover:text-slate-600", "aria-label": "Close", children: _jsx("svg", { className: "w-[18px] h-[18px]", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M6 18L18 6M6 6l12 12" }) }) })] }), _jsxs("div", { className: "px-6 py-5 flex flex-col gap-4 overflow-y-auto flex-1 min-h-0", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Group Name" }), _jsx("input", { type: "text", value: editGroupName, onChange: (e) => setEditGroupName(e.target.value), className: "w-full px-3 py-2.5 text-sm text-slate-800 bg-white border-[1.5px] border-slate-200 rounded-md transition-all duration-150 focus:outline-none focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans, autoFocus: true })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("span", { className: "text-[0.6875rem] font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Category" }), _jsx("div", { className: "flex gap-1.5", children: [
|
|
600
|
-
{ type: "setup", label: "Setup", color: "amber" },
|
|
601
|
-
{
|
|
602
|
-
type: "recurring",
|
|
603
|
-
label: "Recurring",
|
|
604
|
-
color: "emerald",
|
|
605
|
-
},
|
|
606
|
-
{
|
|
607
|
-
type: "addon",
|
|
608
|
-
label: "Add-on",
|
|
609
|
-
color: "violet",
|
|
610
|
-
},
|
|
611
|
-
].map(({ type, label, color }) => (_jsx("button", { onClick: () => setEditGroupType(type), className: `flex-1 px-2.5 py-2 text-xs font-semibold rounded-md border-[1.5px] cursor-pointer transition-all duration-150 ${editGroupType === type
|
|
612
|
-
? color === "amber"
|
|
613
|
-
? "border-amber-500 bg-amber-50 text-amber-700"
|
|
614
|
-
: color === "emerald"
|
|
615
|
-
? "border-emerald-500 bg-emerald-50 text-emerald-700"
|
|
616
|
-
: "border-violet-500 bg-violet-50 text-violet-700"
|
|
617
|
-
: "border-slate-200 bg-white text-slate-600 hover:border-slate-300"}`, style: fontSans, children: label }, type))) })] }), editGroupType !== "setup" && (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Available Billing Cycles" }), _jsx("div", { className: "flex flex-col gap-2.5 p-3 bg-slate-50 rounded-[10px]", children: Object.entries(BILLING_CYCLE_SHORT_LABELS)
|
|
618
|
-
.filter(([value]) => value !== "ONE_TIME")
|
|
619
|
-
.map(([value, label]) => (_jsxs("label", { className: "flex items-center gap-2.5 cursor-pointer text-sm text-slate-700", children: [_jsx("input", { type: "checkbox", checked: editGroupBillingCycles.includes(value), onChange: (e) => {
|
|
620
|
-
if (e.target.checked) {
|
|
621
|
-
setEditGroupBillingCycles([
|
|
622
|
-
...editGroupBillingCycles,
|
|
623
|
-
value,
|
|
624
|
-
]);
|
|
625
|
-
}
|
|
626
|
-
else {
|
|
627
|
-
setEditGroupBillingCycles(editGroupBillingCycles.filter((c) => c !== value));
|
|
628
|
-
}
|
|
629
|
-
}, className: "cursor-pointer w-4 h-4" }), _jsx("span", { children: label })] }, value))) })] })), editGroupType === "recurring" &&
|
|
630
|
-
editGroupPricingMode === "TIER_DEPENDENT" &&
|
|
631
|
-
tiers.length > 0 && (_jsxs(_Fragment, { children: [_jsx("div", { className: "flex gap-0 border-b border-slate-200 mb-3 overflow-x-auto sticky top-0 bg-white z-10", children: tiers.map((tier) => (_jsxs("button", { onClick: () => setEditTierTab(tier.id), className: `flex items-center gap-1.5 px-3 py-2 text-xs font-medium bg-none border-none border-b-2 cursor-pointer whitespace-nowrap transition-all duration-150 ${editTierTab === tier.id
|
|
632
|
-
? "text-violet-700 border-b-violet-600 font-semibold"
|
|
633
|
-
: "text-slate-500 border-b-transparent hover:text-slate-700 hover:bg-slate-50"} ${tier.isCustomPricing ? "italic" : ""}`, style: fontSans, children: [tier.name, tier.isCustomPricing && (_jsx("span", { className: "text-[0.5625rem] font-semibold uppercase tracking-[0.04em] text-amber-600 bg-amber-50 px-[5px] py-px rounded-full", children: "Custom" })), !tier.isCustomPricing &&
|
|
634
|
-
editTierPrices[tier.id] &&
|
|
635
|
-
parseFloat(editTierPrices[tier.id]) > 0 && (_jsx("span", { className: "text-[0.6875rem] text-emerald-600 font-semibold", style: fontMono, children: formatPrice(parseFloat(editTierPrices[tier.id])) })), !tier.isCustomPricing &&
|
|
636
|
-
(!editTierPrices[tier.id] ||
|
|
637
|
-
parseFloat(editTierPrices[tier.id]) <= 0) && (_jsx("span", { className: "text-[0.6875rem] text-amber-500 font-medium", style: fontMono, children: "$0" }))] }, tier.id))) }), editTierTab &&
|
|
638
|
-
(() => {
|
|
639
|
-
const activeTier = tiers.find((t) => t.id === editTierTab);
|
|
640
|
-
if (!activeTier)
|
|
641
|
-
return null;
|
|
642
|
-
// Custom tier: no price input
|
|
643
|
-
if (activeTier.isCustomPricing) {
|
|
644
|
-
return (_jsxs("div", { className: "flex items-center gap-2 p-3 bg-slate-50 border border-dashed border-slate-300 rounded-md text-xs text-slate-500 italic", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", width: "16", height: "16", children: _jsx("path", { d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), _jsx("span", { children: "Price negotiated per customer. No group-level price input for custom tiers." })] }));
|
|
645
|
-
}
|
|
646
|
-
const tierBase = parseFloat(editTierPrices[activeTier.id]) || 0;
|
|
647
|
-
const tierAmount = activeTier.pricing.amount ?? 0;
|
|
648
|
-
// Budget: sum of other groups' prices for this tier
|
|
649
|
-
const otherGroupsTotal = regularGroups
|
|
650
|
-
.filter((g) => editingGroup && g.id !== editingGroup.id)
|
|
651
|
-
.reduce((sum, g) => {
|
|
652
|
-
const tp = g.tierDependentPricing?.find((p) => p.tierId === activeTier.id);
|
|
653
|
-
const mp = tp?.recurringPricing?.find((p) => p.billingCycle === "MONTHLY");
|
|
654
|
-
if (mp)
|
|
655
|
-
return sum + (mp.amount ?? 0);
|
|
656
|
-
// Fallback to standalone
|
|
657
|
-
const sp = g.standalonePricing?.recurringPricing?.find((p) => p.billingCycle === "MONTHLY");
|
|
658
|
-
return sum + (sp?.amount ?? 0);
|
|
659
|
-
}, 0);
|
|
660
|
-
const projectedTotal = otherGroupsTotal + tierBase;
|
|
661
|
-
return (_jsxs("div", { style: { animation: "catalog__fade-in 0.15s ease" }, children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsxs("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: ["Recurring Price (", activeTier.name, ")"] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-slate-500", children: "$" }), _jsx("input", { type: "number", value: editTierPrices[activeTier.id] || "", onChange: (e) => setEditTierPrices({
|
|
662
|
-
...editTierPrices,
|
|
663
|
-
[activeTier.id]: e.target.value,
|
|
664
|
-
}), placeholder: "0.00", className: "flex-1 px-2.5 py-2 text-sm text-slate-800 bg-white border-[1.5px] border-slate-200 rounded-md focus:outline-none focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans, step: "0.01" })] })] }), tierAmount > 0 &&
|
|
665
|
-
activeTier.pricingMode !== "CALCULATED" && (_jsxs("div", { className: "mt-2 p-2 px-2.5 bg-slate-50 border border-slate-200 rounded-md", children: [_jsxs("span", { className: "block text-[0.6875rem] font-semibold text-slate-700 mb-1.5", children: [activeTier.name, " budget:", " ", formatPrice(projectedTotal), "/mo of", " ", formatPrice(tierAmount), "/mo"] }), _jsxs("div", { className: "flex items-center gap-1.5 py-[3px]", children: [_jsx("div", { className: "flex-1 h-[5px] bg-slate-200 rounded-full overflow-hidden", children: _jsx("div", { className: `h-full rounded-full transition-[width] duration-200 ease-linear ${projectedTotal > tierAmount ? "bg-rose-500" : "bg-emerald-500"}`, style: {
|
|
666
|
-
width: `${Math.min((projectedTotal / tierAmount) * 100, 100)}%`,
|
|
667
|
-
} }) }), _jsxs("span", { className: `shrink-0 text-[0.625rem] ${projectedTotal > tierAmount ? "text-rose-600 font-semibold" : "text-slate-600"}`, style: fontMono, children: [formatPrice(projectedTotal), " /", " ", formatPrice(tierAmount), projectedTotal > tierAmount && (_jsxs("span", { className: "text-rose-500 font-bold", children: [" ", "+", formatPrice(projectedTotal - tierAmount)] }))] })] })] })), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Setup Cost (one-time)" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-slate-500", children: "$" }), _jsx("input", { type: "number", value: editTierSetupCosts[activeTier.id] || "", onChange: (e) => setEditTierSetupCosts({
|
|
668
|
-
...editTierSetupCosts,
|
|
669
|
-
[activeTier.id]: e.target.value,
|
|
670
|
-
}), placeholder: "0.00", className: "flex-1 px-2.5 py-2 text-sm text-slate-800 bg-white border-[1.5px] border-slate-200 rounded-md focus:outline-none focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans, step: "0.01" })] })] }), editGroupBillingCycles.length > 0 &&
|
|
671
|
-
tierBase > 0 && (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Billing Cycles & Discounts" }), _jsx("div", { className: "flex flex-col gap-2", children: editGroupBillingCycles.map((cycle) => {
|
|
672
|
-
const months = BILLING_CYCLE_MONTHS[cycle];
|
|
673
|
-
const total = tierBase * months;
|
|
674
|
-
const isMonthly = cycle === "MONTHLY";
|
|
675
|
-
const cycleLabel = {
|
|
676
|
-
MONTHLY: "Monthly",
|
|
677
|
-
QUARTERLY: "Quarterly",
|
|
678
|
-
SEMI_ANNUAL: "Semi-Annual",
|
|
679
|
-
ANNUAL: "Annual",
|
|
680
|
-
ONE_TIME: "One-Time",
|
|
681
|
-
}[cycle];
|
|
682
|
-
// Percentage discount from user input (always editable)
|
|
683
|
-
const discountPct = parseFloat(editTierDiscounts[activeTier.id]?.[cycle] || "0") || 0;
|
|
684
|
-
let effective = null;
|
|
685
|
-
let savingsPct = 0;
|
|
686
|
-
if (discountPct > 0) {
|
|
687
|
-
effective =
|
|
688
|
-
total * (1 - discountPct / 100);
|
|
689
|
-
savingsPct = Math.round(discountPct);
|
|
690
|
-
}
|
|
691
|
-
return (_jsxs("div", { className: "border border-slate-200 rounded-[10px] px-3.5 py-2.5 bg-white", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("span", { className: "text-sm font-semibold text-slate-700", children: cycleLabel }), _jsx("span", { className: "text-[0.9375rem] font-bold text-slate-800", style: fontMono, children: formatPrice(total, "USD") })] }), !isMonthly && (_jsxs("div", { className: "flex gap-4 mt-2 pt-2 border-t border-dashed border-slate-200", children: [_jsxs("div", { className: "flex-1 flex flex-col gap-0.5", children: [_jsx("span", { className: "text-[0.625rem] font-medium uppercase tracking-[0.06em] text-violet-500", style: fontMono, children: "Standard Price" }), _jsxs("span", { className: "text-[0.8125rem] text-slate-600 flex items-baseline gap-1.5", children: ["$", tierBase, " \u00D7 ", months, "mo", _jsx("span", { className: "font-semibold text-slate-700", children: formatPrice(total, "USD") })] })] }), _jsxs("div", { className: "flex-1 flex flex-col gap-0.5", children: [_jsx("span", { className: "text-[0.625rem] font-medium uppercase tracking-[0.06em] text-violet-500", style: fontMono, children: "Discount" }), _jsxs("div", { className: "flex items-center border border-slate-200 rounded-[10px] overflow-hidden transition-all duration-150 h-[34px] focus-within:border-violet-400 focus-within:shadow-[0_0_0_3px_rgba(124,58,237,0.1)]", children: [_jsx("input", { type: "number", value: editTierDiscounts[activeTier.id]?.[cycle] || "", onChange: (e) => {
|
|
692
|
-
const updated = {
|
|
693
|
-
...editTierDiscounts,
|
|
694
|
-
};
|
|
695
|
-
updated[activeTier.id] = {
|
|
696
|
-
...updated[activeTier.id],
|
|
697
|
-
[cycle]: e.target.value,
|
|
698
|
-
};
|
|
699
|
-
setEditTierDiscounts(updated);
|
|
700
|
-
}, placeholder: "0", step: "0.1", min: "0", max: "100", className: "flex-1 py-1.5 px-2 pr-1 border-none text-sm text-slate-700 bg-transparent outline-none min-w-0 placeholder:text-slate-400", style: fontMono }), _jsx("span", { className: "px-3 py-2.5 pl-2 text-sm font-medium text-slate-400 bg-slate-50 whitespace-nowrap select-none", children: "%" })] })] })] })), effective !== null && (_jsxs("div", { className: "flex items-center gap-2 mt-1.5 px-2.5 py-1.5 bg-emerald-50 rounded-md", children: [_jsx("span", { className: "text-[0.8125rem] text-emerald-600", children: "\u2192" }), _jsx("span", { className: "text-sm font-bold text-emerald-700", style: fontMono, children: formatPrice(effective, "USD") }), savingsPct > 0 && (_jsxs("span", { className: "ml-auto text-[0.6875rem] font-bold text-emerald-600 bg-emerald-100 px-2 py-0.5 rounded-full", style: fontMono, children: [formatPrice(total - effective, "USD"), " ", "off (", savingsPct, "%)"] }))] }))] }, cycle));
|
|
701
|
-
}) })] }))] }));
|
|
702
|
-
})()] })), editGroupType !== "setup" &&
|
|
703
|
-
editGroupPricingMode === "STANDALONE" && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Recurring Price" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-slate-500", children: "$" }), _jsx("input", { type: "number", value: editGroupBasePrice, onChange: (e) => setEditGroupBasePrice(e.target.value), placeholder: "0.00", className: "flex-1 px-2.5 py-2 text-sm text-slate-800 bg-white border-[1.5px] border-slate-200 rounded-md focus:outline-none focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans, step: "0.01" })] })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Setup Cost (one-time)" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-slate-500", children: "$" }), _jsx("input", { type: "number", value: editGroupSetupCost, onChange: (e) => setEditGroupSetupCost(e.target.value), placeholder: "0.00", className: "flex-1 px-2.5 py-2 text-sm text-slate-800 bg-white border-[1.5px] border-slate-200 rounded-md focus:outline-none focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans, step: "0.01" })] })] }), editGroupBillingCycles.length > 0 && (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Billing Cycles & Discounts" }), _jsx("div", { className: "flex flex-col gap-2", children: editGroupBillingCycles.map((cycle) => {
|
|
704
|
-
const base = parseFloat(editGroupBasePrice) || 0;
|
|
705
|
-
const months = BILLING_CYCLE_MONTHS[cycle];
|
|
706
|
-
const total = base > 0 ? base * months : null;
|
|
707
|
-
const discountPct = parseFloat(editGroupDiscounts[cycle]) || 0;
|
|
708
|
-
const effective = total !== null && discountPct > 0
|
|
709
|
-
? total * (1 - discountPct / 100)
|
|
710
|
-
: null;
|
|
711
|
-
const savingsPct = Math.round(discountPct);
|
|
712
|
-
const isMonthly = cycle === "MONTHLY";
|
|
713
|
-
const cycleLabel = {
|
|
714
|
-
MONTHLY: "Monthly",
|
|
715
|
-
QUARTERLY: "Quarterly",
|
|
716
|
-
SEMI_ANNUAL: "Semi-Annual",
|
|
717
|
-
ANNUAL: "Annual",
|
|
718
|
-
ONE_TIME: "One-Time",
|
|
719
|
-
}[cycle];
|
|
720
|
-
const shortLabel = `${months}mo`;
|
|
721
|
-
return (_jsxs("div", { className: `border border-slate-200 rounded-[10px] px-3.5 py-2.5 transition-[150ms] ${base > 0 ? "bg-white" : "bg-slate-50"}`, children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("span", { className: "text-sm font-semibold text-slate-700", children: cycleLabel }), total !== null ? (_jsx("span", { className: "text-[0.9375rem] font-bold text-slate-800", style: fontMono, children: formatPrice(total, "USD") })) : (_jsx("span", { className: "text-sm text-slate-400", children: "--" }))] }), base > 0 && (_jsxs("div", { className: "flex gap-4 mt-2 pt-2 border-t border-dashed border-slate-200", children: [!isMonthly && (_jsxs("div", { className: "flex-1 flex flex-col gap-0.5", children: [_jsx("span", { className: "text-[0.625rem] font-medium uppercase tracking-[0.06em] text-violet-500", style: fontMono, children: "Standard Price" }), _jsxs("span", { className: "text-[0.8125rem] text-slate-600 flex items-baseline gap-1.5", children: ["$", base, " \u00D7 ", shortLabel, _jsx("span", { className: "font-semibold text-slate-700", children: formatPrice(total ?? 0, "USD") })] })] })), _jsxs("div", { className: "flex-1 flex flex-col gap-0.5", children: [_jsx("span", { className: "text-[0.625rem] font-medium uppercase tracking-[0.06em] text-violet-500", style: fontMono, children: "Discount" }), _jsxs("div", { className: "flex items-center border border-slate-200 rounded-[10px] overflow-hidden transition-all duration-150 h-[34px] focus-within:border-violet-400 focus-within:shadow-[0_0_0_3px_rgba(124,58,237,0.1)]", children: [_jsx("input", { type: "number", value: editGroupDiscounts[cycle], onChange: (e) => setEditGroupDiscounts({
|
|
722
|
-
...editGroupDiscounts,
|
|
723
|
-
[cycle]: e.target.value,
|
|
724
|
-
}), placeholder: "0", step: "0.1", min: "0", max: "100", className: "flex-1 py-1.5 px-2 pr-1 border-none text-sm text-slate-700 bg-transparent outline-none min-w-0 placeholder:text-slate-400", style: fontMono }), _jsx("span", { className: "px-3 py-2.5 pl-2 text-sm font-medium text-slate-400 bg-slate-50 whitespace-nowrap select-none", children: "%" })] })] })] })), effective !== null && discountPct > 0 && (_jsxs("div", { className: "flex items-center gap-2 mt-1.5 px-2.5 py-1.5 bg-emerald-50 rounded-md", children: [_jsx("span", { className: "text-[0.8125rem] text-emerald-600", children: "\u2192" }), _jsx("span", { className: "text-sm font-bold text-emerald-700", style: fontMono, children: formatPrice(effective, "USD") }), savingsPct > 0 && (_jsxs("span", { className: "ml-auto text-[0.6875rem] font-bold text-emerald-600 bg-emerald-100 px-2 py-0.5 rounded-full", style: fontMono, children: [savingsPct, "% off"] }))] }))] }, cycle));
|
|
725
|
-
}) })] }))] })), editGroupType === "setup" && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("span", { className: "text-[0.6875rem] font-semibold uppercase tracking-[0.05em] text-slate-500", children: "One-time Fee" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-slate-500", children: "$" }), _jsx("input", { type: "number", value: editGroupPrice, onChange: (e) => setEditGroupPrice(e.target.value), placeholder: "0", className: "flex-1 px-2.5 py-2 text-sm text-slate-800 bg-white border-[1.5px] border-slate-200 rounded-md focus:outline-none focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans, step: "0.01" })] })] }), tiers.length > 0 && parseFloat(editGroupPrice) > 0 && (_jsxs("div", { className: "flex flex-col gap-2.5", children: [_jsx("span", { className: "text-[0.6875rem] font-semibold uppercase tracking-[0.05em] text-slate-500", children: "Setup Fee Discounts by Tier & Billing Cycle" }), _jsx("div", { className: "flex gap-0 border-b border-slate-200 mb-3 overflow-x-auto", children: tiers.map((tier) => (_jsxs("button", { onClick: () => setEditTierTab(tier.id), className: `flex items-center gap-1.5 px-3 py-2 text-xs font-medium bg-none border-none border-b-2 cursor-pointer whitespace-nowrap transition-all duration-150 ${editTierTab === tier.id
|
|
726
|
-
? "text-violet-700 border-b-violet-600 font-semibold"
|
|
727
|
-
: "text-slate-500 border-b-transparent hover:text-slate-700 hover:bg-slate-50"} ${tier.isCustomPricing ? "italic" : ""}`, style: fontSans, children: [tier.name, tier.excludeFromSetupFee && (_jsx("span", { className: "text-[0.5625rem] font-semibold uppercase tracking-[0.04em] text-teal-600 bg-teal-50 px-[5px] py-px rounded-full", children: "No Fee" })), tier.isCustomPricing && (_jsx("span", { className: "text-[0.5625rem] font-semibold uppercase tracking-[0.04em] text-amber-600 bg-amber-50 px-[5px] py-px rounded-full", children: "Custom" }))] }, tier.id))) }), editTierTab &&
|
|
728
|
-
(() => {
|
|
729
|
-
const activeTier = tiers.find((t) => t.id === editTierTab);
|
|
730
|
-
if (!activeTier)
|
|
731
|
-
return null;
|
|
732
|
-
if (activeTier.excludeFromSetupFee) {
|
|
733
|
-
return (_jsxs("div", { className: "flex items-center gap-2 p-3 bg-teal-50 border border-dashed border-teal-300 rounded-md text-xs text-teal-700 italic", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", width: "16", height: "16", children: _jsx("path", { d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), _jsx("span", { children: "No setup fee \u2014 this tier is excluded from setup fees." })] }));
|
|
734
|
-
}
|
|
735
|
-
if (activeTier.isCustomPricing) {
|
|
736
|
-
return (_jsxs("div", { className: "flex items-center gap-2 p-3 bg-slate-50 border border-dashed border-slate-300 rounded-md text-xs text-slate-500 italic", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", width: "16", height: "16", children: _jsx("path", { d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), _jsx("span", { children: "Custom pricing tier \u2014 discounts negotiated per customer." })] }));
|
|
737
|
-
}
|
|
738
|
-
const baseAmount = parseFloat(editGroupPrice) || 0;
|
|
739
|
-
const SETUP_CYCLES = [
|
|
740
|
-
"MONTHLY",
|
|
741
|
-
"QUARTERLY",
|
|
742
|
-
"SEMI_ANNUAL",
|
|
743
|
-
"ANNUAL",
|
|
744
|
-
];
|
|
745
|
-
const cycleLabels = {
|
|
746
|
-
MONTHLY: "Monthly",
|
|
747
|
-
QUARTERLY: "Quarterly",
|
|
748
|
-
SEMI_ANNUAL: "Semi-Annual",
|
|
749
|
-
ANNUAL: "Annual",
|
|
750
|
-
};
|
|
751
|
-
return (_jsx("div", { className: "flex flex-col gap-1.5", children: SETUP_CYCLES.map((cycle) => {
|
|
752
|
-
const entry = editSetupTierDiscounts[activeTier.id]?.[cycle];
|
|
753
|
-
const dType = "PERCENTAGE";
|
|
754
|
-
const dValue = entry?.discountValue || "";
|
|
755
|
-
const parsedValue = parseFloat(dValue) || 0;
|
|
756
|
-
// Compute effective price
|
|
757
|
-
let effectiveAmount = baseAmount;
|
|
758
|
-
let savings = 0;
|
|
759
|
-
let savingsPct = 0;
|
|
760
|
-
if (parsedValue > 0 && baseAmount > 0) {
|
|
761
|
-
const result = calculateEffectiveSetupPrice({
|
|
762
|
-
amount: baseAmount,
|
|
763
|
-
discount: {
|
|
764
|
-
discountType: dType,
|
|
765
|
-
discountValue: parsedValue,
|
|
766
|
-
},
|
|
767
|
-
});
|
|
768
|
-
effectiveAmount = result.effectiveAmount;
|
|
769
|
-
savings = result.savings;
|
|
770
|
-
savingsPct = result.savingsPercent;
|
|
771
|
-
}
|
|
772
|
-
return (_jsxs("div", { className: "flex flex-col gap-1 px-3 py-2.5 bg-slate-50 border border-slate-200 rounded-md", children: [_jsxs("div", { className: "flex justify-between items-center", children: [_jsxs("span", { className: "text-xs font-semibold text-slate-700", children: [cycleLabels[cycle], " subscription"] }), _jsx("span", { className: "text-xs text-slate-400", style: fontMono, children: formatPrice(baseAmount, "USD") })] }), _jsxs("div", { className: "flex gap-1.5 items-stretch", children: [_jsx("span", { className: "text-[0.8125rem] font-medium text-slate-500 whitespace-nowrap", children: "Discount" }), _jsxs("div", { className: "flex-1 flex items-center gap-2", children: [_jsx("input", { type: "number", value: dValue, onChange: (e) => {
|
|
773
|
-
const updated = {
|
|
774
|
-
...editSetupTierDiscounts,
|
|
775
|
-
};
|
|
776
|
-
updated[activeTier.id] = {
|
|
777
|
-
...updated[activeTier.id],
|
|
778
|
-
[cycle]: {
|
|
779
|
-
...updated[activeTier.id]?.[cycle],
|
|
780
|
-
discountValue: e.target.value,
|
|
781
|
-
},
|
|
782
|
-
};
|
|
783
|
-
setEditSetupTierDiscounts(updated);
|
|
784
|
-
}, placeholder: "0", className: "flex-1 px-2.5 py-2 text-sm text-slate-800 bg-white border-[1.5px] border-slate-200 rounded-md focus:outline-none focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans, step: "0.01", min: "0", max: "100" }), _jsx("span", { className: "px-3 py-2.5 pl-2 text-sm font-medium text-slate-400 bg-slate-50 whitespace-nowrap select-none", children: "%" })] })] }), parsedValue > 0 && baseAmount > 0 && (_jsxs("div", { className: "flex items-center gap-2 px-2.5 py-1.5 bg-emerald-50 border border-emerald-100 rounded-md flex-wrap", children: [_jsx("span", { className: "text-xs text-emerald-500", children: "\u2192" }), _jsx("span", { className: "text-xs text-slate-400 line-through", style: fontMono, children: formatPrice(baseAmount, "USD") }), _jsx("span", { className: "text-sm font-bold text-emerald-700", style: fontMono, children: formatPrice(effectiveAmount, "USD") }), savingsPct > 0 && (_jsxs("span", { className: "ml-auto text-[0.625rem] font-semibold text-emerald-600 bg-emerald-100 px-1.5 py-0.5 rounded-md", style: fontMono, children: ["save ", formatPrice(savings, "USD"), " (", savingsPct, "% off)"] }))] }))] }, cycle));
|
|
785
|
-
}) }));
|
|
786
|
-
})()] }))] }))] }), _jsxs("div", { className: "flex gap-3 px-6 pt-4 pb-5 border-t border-slate-100", children: [_jsx("button", { onClick: () => setEditingGroup(null), className: "flex-1 px-4 py-2.5 text-[0.8125rem] font-semibold rounded-[10px] border-none cursor-pointer flex items-center justify-center gap-1.5 transition-all duration-150 bg-slate-100 text-slate-700 hover:bg-slate-200 disabled:opacity-50 disabled:cursor-not-allowed", style: fontSans, children: "Cancel" }), _jsx("button", { onClick: handleSaveGroupEdit, disabled: !editGroupName.trim(), className: "flex-1 px-4 py-2.5 text-[0.8125rem] font-semibold rounded-[10px] border-none cursor-pointer flex items-center justify-center gap-1.5 transition-all duration-150 text-white hover:enabled:-translate-y-px disabled:opacity-50 disabled:cursor-not-allowed", style: {
|
|
787
|
-
...fontSans,
|
|
788
|
-
background: "linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%)",
|
|
789
|
-
boxShadow: "0 2px 6px rgba(124, 58, 237, 0.25)",
|
|
790
|
-
}, children: "Save Changes" })] })] }) })), _jsxs("div", { className: "flex gap-6 min-h-[600px]", children: [_jsxs("aside", { className: "w-80 shrink-0 bg-white rounded-xl shadow-md border border-slate-100 p-5", style: { animation: "so-scale-in 300ms ease-out" }, children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsxs("h2", { className: "text-[1.0625rem] font-semibold text-slate-800 m-0 tracking-[-0.01em]", children: ["Service Groups", _jsx(InfoIcon, { content: "Option Groups bundle related services together. They can be setup fees (one-time), recurring charges, or add-ons that clients select independently." })] }), _jsx("button", { onClick: handleAddNewGroup, className: "w-8 h-8 rounded-[10px] bg-slate-100 border-none text-slate-500 cursor-pointer flex items-center justify-center transition-all duration-150 hover:bg-violet-100 hover:text-violet-600", "aria-label": "Add group", children: _jsx("svg", { className: "w-[18px] h-[18px]", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M12 4v16m8-8H4" }) }) })] }), _jsxs("div", { className: "flex flex-col gap-5", children: [setupGroups.length > 0 && (_jsx(GroupSection, { title: "Setup & Formation", color: "amber", groups: setupGroups, selectedGroupId: selectedGroupId, getServicesForGroup: getServicesForGroup, onSelect: setSelectedGroupId, onEdit: handleOpenEditGroup, onDelete: handleDeleteGroup })), regularGroups.length > 0 && (_jsx(GroupSection, { title: "Recurring Services", color: "emerald", groups: regularGroups, selectedGroupId: selectedGroupId, getServicesForGroup: getServicesForGroup, onSelect: setSelectedGroupId, onEdit: handleOpenEditGroup, onDelete: handleDeleteGroup })), addonGroups.length > 0 && (_jsx(GroupSection, { title: "Optional Add-ons", color: "violet", groups: addonGroups, selectedGroupId: selectedGroupId, getServicesForGroup: getServicesForGroup, onSelect: setSelectedGroupId, onEdit: handleOpenEditGroup, onDelete: handleDeleteGroup })), ungroupedServices.length > 0 && (_jsx("div", { className: "flex flex-col gap-2", children: _jsxs("button", { onClick: () => setSelectedGroupId(null), className: `w-full px-3.5 py-2.5 bg-transparent border-none border-t border-slate-200 rounded-none cursor-pointer text-left transition-all duration-150 mt-2 pt-[18px] hover:bg-slate-50 ${selectedGroupId === null ? "bg-slate-100 border-l-[3px] border-l-slate-500 rounded-[10px]" : ""}`, children: [_jsx("span", { className: "block text-sm font-medium text-slate-700", children: "Ungrouped Services" }), _jsxs("span", { className: "block text-xs text-slate-400 mt-0.5", children: [ungroupedServices.length, " services"] })] }) })), optionGroups.length === 0 && ungroupedServices.length === 0 && (_jsxs("div", { className: "text-center px-4 py-8 text-slate-500", children: [_jsx("p", { className: "text-sm font-medium m-0 mb-1", children: "No service groups yet" }), _jsx("p", { className: "text-xs m-0 text-slate-400", children: "Click + to create a group" })] }))] })] }), _jsxs("main", { className: "flex-1 bg-white rounded-xl shadow-md border border-slate-100 p-6", style: {
|
|
791
|
-
animation: "so-scale-in 300ms ease-out",
|
|
792
|
-
animationDelay: "50ms",
|
|
793
|
-
}, children: [_jsxs("div", { className: "flex items-start justify-between gap-4 mb-6", children: [_jsxs("div", { className: "flex-1", children: [_jsx("h2", { className: "text-[1.375rem] font-semibold text-slate-800 m-0 mb-1.5 tracking-[-0.02em]", children: selectedGroup?.name || "Ungrouped Services" }), _jsx("p", { className: "text-sm text-slate-500 m-0", children: selectedGroup?.costType === "SETUP" ? (_jsxs("span", { className: "flex items-center gap-2.5", children: [_jsx("span", { className: "inline-flex items-center px-2.5 py-1 text-[0.6875rem] font-semibold uppercase tracking-[0.04em] rounded-full bg-amber-100 text-amber-700", children: "Setup & Formation" }), selectedGroup.price != null
|
|
794
|
-
? `One-time fee: $${selectedGroup.price}`
|
|
795
|
-
: "Included in tier price"] })) : selectedGroup?.isAddOn ? (_jsxs("span", { className: "flex items-center gap-2.5", children: ["Optional add-on group", selectedGroup.availableBillingCycles.map((cycle) => (_jsx("span", { className: "inline-flex items-center px-2.5 py-1 text-[0.6875rem] font-semibold uppercase tracking-[0.04em] rounded-full bg-violet-100 text-violet-700", style: { marginLeft: 8 }, children: BILLING_CYCLE_SHORT_LABELS[cycle] }, cycle))), selectedGroup.price != null && (_jsxs("span", { className: "text-amber-600", children: ["$", selectedGroup.price] }))] })) : selectedGroup ? (_jsxs("span", { className: "flex items-center gap-2.5", children: ["Included in subscription", selectedGroup.availableBillingCycles.map((cycle) => (_jsx("span", { className: "inline-flex items-center px-2.5 py-1 text-[0.6875rem] font-semibold uppercase tracking-[0.04em] rounded-full bg-emerald-100 text-emerald-700", style: { marginLeft: 8 }, children: BILLING_CYCLE_SHORT_LABELS[cycle] }, cycle)))] })) : ("Services not assigned to any group") })] }), selectedGroupId && (_jsxs("div", { className: "flex gap-2", children: [_jsxs("button", { onClick: () => setShowServiceTemplates(!showServiceTemplates), className: "flex-1 px-4 py-2.5 text-[0.8125rem] font-semibold rounded-[10px] border-none cursor-pointer flex items-center justify-center gap-1.5 transition-all duration-150 bg-slate-100 text-slate-700 hover:bg-slate-200 disabled:opacity-50 disabled:cursor-not-allowed", style: fontSans, title: "Quick-add from templates", children: [_jsx("svg", { className: "w-4 h-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" }) }), "Templates"] }), _jsxs("button", { onClick: () => setIsAddingService(true), className: "flex-1 px-4 py-2.5 text-[0.8125rem] font-semibold rounded-[10px] border-none cursor-pointer flex items-center justify-center gap-1.5 transition-all duration-150 text-white hover:enabled:-translate-y-px disabled:opacity-50 disabled:cursor-not-allowed", style: {
|
|
796
|
-
...fontSans,
|
|
797
|
-
background: "linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%)",
|
|
798
|
-
boxShadow: "0 2px 6px rgba(124, 58, 237, 0.25)",
|
|
799
|
-
}, children: [_jsx("svg", { className: "w-4 h-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M12 4v16m8-8H4" }) }), "Add Service"] })] }))] }), showServiceTemplates && selectedGroupId && (_jsxs("div", { className: "border border-violet-200 rounded-xl p-5 mb-6", style: {
|
|
800
|
-
background: "linear-gradient(135deg, #f5f3ff 0%, #f8fafc 100%)",
|
|
801
|
-
animation: "so-scale-in 150ms ease-out",
|
|
802
|
-
}, children: [_jsxs("div", { className: "flex items-center justify-between mb-2", children: [_jsxs("h3", { className: "text-base font-semibold text-slate-800 m-0 flex items-center gap-2", children: ["⚡", " Quick Add from Templates"] }), _jsx("button", { onClick: () => setShowServiceTemplates(false), className: "w-7 h-7 rounded-md bg-transparent border-none text-slate-400 cursor-pointer flex items-center justify-center transition-all duration-150 hover:bg-white hover:text-slate-600", children: _jsx("svg", { className: "w-4 h-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M6 18L18 6M6 6l12 12" }) }) })] }), _jsx("p", { className: "text-[0.8125rem] text-slate-500 m-0 mb-4", children: "Click any template to instantly add it to this group. Services will be included in all tiers by default." }), _jsx("div", { className: "grid grid-cols-2 gap-4 max-md:grid-cols-1", children: Object.entries(SERVICE_TEMPLATES).map(([category, templates]) => (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("h4", { className: "text-[0.6875rem] font-bold uppercase tracking-[0.06em] text-slate-500 m-0 pl-1", children: category }), _jsx("div", { className: "flex flex-col gap-1", children: templates.map((template, idx) => {
|
|
803
|
-
// Check if service already exists
|
|
804
|
-
const alreadyExists = services.some((s) => s.title.toLowerCase() ===
|
|
805
|
-
template.title.toLowerCase());
|
|
806
|
-
return (_jsxs("button", { onClick: () => !alreadyExists &&
|
|
807
|
-
handleAddFromTemplate(template), disabled: alreadyExists, className: `flex items-center gap-2.5 px-3 py-2.5 bg-white border border-slate-200 rounded-[10px] cursor-pointer text-left transition-all duration-150 hover:enabled:border-violet-300 hover:enabled:bg-white hover:enabled:shadow-[0_2px_8px_rgba(124,58,237,0.1)] hover:enabled:translate-x-0.5 active:enabled:translate-x-0 ${alreadyExists ? "opacity-60 cursor-not-allowed" : ""}`, children: [_jsx("span", { className: "text-xl shrink-0", children: template.icon }), _jsxs("div", { className: "flex-1 min-w-0 flex flex-col gap-0.5", children: [_jsx("span", { className: "text-[0.8125rem] font-medium text-slate-800", children: template.title }), _jsx("span", { className: "text-[0.6875rem] text-slate-500 whitespace-nowrap overflow-hidden text-ellipsis", children: template.description })] }), alreadyExists && (_jsx("span", { className: "px-2 py-0.5 text-[0.5625rem] font-bold uppercase tracking-[0.04em] bg-emerald-100 text-emerald-700 rounded shrink-0", children: "Added" }))] }, idx));
|
|
808
|
-
}) })] }, category))) })] })), !selectedGroupId && (_jsxs("div", { className: "flex items-start gap-3 px-4 py-3.5 rounded-[10px] mb-5 bg-sky-50 border border-sky-200 text-sky-700", children: [_jsxs("svg", { className: "w-5 h-5 shrink-0 mt-px", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.75", children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("path", { d: "M12 16v-4m0-4h.01" })] }), _jsx("p", { className: "text-[0.8125rem] m-0 leading-relaxed", children: "Select a service group from the sidebar to add services. Services must belong to a group to be properly managed." })] })), isAddingService && selectedGroupId && (_jsxs("div", { className: "bg-slate-50 rounded-[10px] border border-slate-200 p-5 mb-6 flex flex-col gap-4", style: { animation: "so-scale-in 150ms ease-out" }, children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Service Name" }), _jsx("input", { type: "text", value: newService.title, onChange: (e) => setNewService({ ...newService, title: e.target.value }), placeholder: "Enter service name...", className: "w-full px-3 py-2.5 text-sm text-slate-800 bg-white border-[1.5px] border-slate-200 rounded-md transition-all duration-150 focus:outline-none focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans, autoFocus: true })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Description" }), _jsx("textarea", { value: newService.description, onChange: (e) => setNewService({
|
|
809
|
-
...newService,
|
|
810
|
-
description: e.target.value,
|
|
811
|
-
}), placeholder: "Enter description...", rows: 2, className: "w-full px-3 py-2.5 text-sm text-slate-800 bg-white border-[1.5px] border-slate-200 rounded-md resize-none transition-all duration-150 focus:outline-none focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans })] }), tiers.length > 0 && (_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Include in Tiers" }), _jsx("div", { className: "grid grid-cols-[repeat(auto-fill,minmax(180px,1fr))] gap-2.5", children: tiers.map((tier) => {
|
|
812
|
-
const isSelected = selectedTierIds.has(tier.id);
|
|
813
|
-
return (_jsxs("label", { className: `flex items-center gap-2.5 px-3.5 py-3 bg-white border-[1.5px] rounded-[10px] cursor-pointer transition-all duration-150 ${isSelected
|
|
814
|
-
? "border-emerald-500 bg-emerald-50 hover:border-emerald-600"
|
|
815
|
-
: "border-slate-200 hover:border-slate-300 hover:bg-slate-50"}`, children: [_jsx("input", { type: "checkbox", checked: isSelected, onChange: (e) => {
|
|
816
|
-
const newSet = new Set(selectedTierIds);
|
|
817
|
-
if (e.target.checked) {
|
|
818
|
-
newSet.add(tier.id);
|
|
819
|
-
}
|
|
820
|
-
else {
|
|
821
|
-
newSet.delete(tier.id);
|
|
822
|
-
}
|
|
823
|
-
setSelectedTierIds(newSet);
|
|
824
|
-
}, className: "w-[18px] h-[18px] shrink-0 accent-emerald-600 cursor-pointer" }), _jsx("span", { className: `flex-1 text-sm font-medium ${isSelected ? "text-emerald-800" : "text-slate-800"}`, children: tier.name }), tier.pricing.amount !== null && (_jsxs("span", { className: `text-xs font-medium whitespace-nowrap ${isSelected ? "text-emerald-600" : "text-slate-500"}`, children: ["$", tier.pricing.amount] }))] }, tier.id));
|
|
825
|
-
}) }), selectedTierIds.size === 0 && (_jsx("p", { className: "text-xs text-slate-500 mt-2 m-0 italic", children: "Select at least one tier to include this service" }))] })), tiers.length === 0 && (_jsxs("div", { className: "flex items-start gap-3 px-4 py-3.5 rounded-[10px] mb-5 bg-amber-50 border border-amber-200 text-amber-700", children: [_jsx("svg", { className: "w-5 h-5 shrink-0 mt-px", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.75", children: _jsx("path", { d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }), _jsx("p", { className: "text-[0.8125rem] m-0 leading-relaxed", children: "No tiers defined yet. Define tiers in the Tier Definition tab first to specify which tiers include this service." })] })), _jsxs("div", { className: "flex gap-2", children: [_jsx("button", { onClick: handleAddService, disabled: !newService.title.trim(), className: "flex-1 px-4 py-2.5 text-[0.8125rem] font-semibold rounded-[10px] border-none cursor-pointer flex items-center justify-center gap-1.5 transition-all duration-150 text-white hover:enabled:-translate-y-px disabled:opacity-50 disabled:cursor-not-allowed", style: {
|
|
826
|
-
...fontSans,
|
|
827
|
-
background: "linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%)",
|
|
828
|
-
boxShadow: "0 2px 6px rgba(124, 58, 237, 0.25)",
|
|
829
|
-
}, children: "Add Service" }), _jsx("button", { onClick: () => {
|
|
830
|
-
setIsAddingService(false);
|
|
831
|
-
setNewService({ title: "", description: "" });
|
|
832
|
-
setSelectedTierIds(new Set());
|
|
833
|
-
}, className: "flex-1 px-4 py-2.5 text-[0.8125rem] font-semibold rounded-[10px] border-none cursor-pointer flex items-center justify-center gap-1.5 transition-all duration-150 bg-slate-100 text-slate-700 hover:bg-slate-200 disabled:opacity-50 disabled:cursor-not-allowed", style: fontSans, children: "Cancel" })] })] })), displayedServices.length === 0 ? (_jsxs("div", { className: "text-center px-6 py-[60px]", children: [_jsx("div", { className: "w-14 h-14 mx-auto mb-4 text-slate-300", children: _jsx("svg", { className: "w-full h-full", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: _jsx("path", { d: "M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" }) }) }), _jsx("h3", { className: "text-[1.0625rem] font-semibold text-slate-700 m-0 mb-1.5", children: "No services in this group" }), _jsx("p", { className: "text-sm text-slate-500 m-0", children: selectedGroupId
|
|
834
|
-
? 'Click "Add Service" to create a new service.'
|
|
835
|
-
: "Select a group to manage its services." })] })) : (_jsx("div", { className: "flex flex-col gap-3", children: displayedServices.map((service) => (_jsx(ServiceCard, { service: service, tiers: tiers, optionGroups: optionGroups, onUpdate: handleUpdateService, onDelete: () => handleDeleteService(service.id), onToggleTier: handleToggleTier }, service.id))) }))] })] }), pendingDeleteGroupId && (_jsx(ConfirmDialog, { title: "Delete this group?", message: "Services in this group will become ungrouped. This action cannot be undone.", confirmLabel: "Delete Group", variant: "danger", onConfirm: confirmDeleteGroup, onCancel: () => setPendingDeleteGroupId(null) })), pendingDeleteServiceId && (_jsx(ConfirmDialog, { title: "Delete this service?", message: "This will remove the service and any associated tier bindings. This action cannot be undone.", confirmLabel: "Delete Service", variant: "danger", onConfirm: confirmDeleteService, onCancel: () => setPendingDeleteServiceId(null) }))] }));
|
|
836
|
-
}
|
|
837
|
-
function GroupSection({ title, color, groups, selectedGroupId, getServicesForGroup, onSelect, onEdit, onDelete, }) {
|
|
838
|
-
return (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: `w-2 h-2 rounded-full ${color === "amber"
|
|
839
|
-
? "bg-amber-500"
|
|
840
|
-
: color === "emerald"
|
|
841
|
-
? "bg-emerald-500"
|
|
842
|
-
: "bg-violet-500"}` }), _jsx("span", { className: "text-[0.6875rem] font-bold uppercase tracking-[0.06em] text-slate-500", children: title })] }), _jsx("div", { className: "flex flex-col gap-1", children: groups.map((group) => (_jsx(GroupButton, { group: group, serviceCount: getServicesForGroup(group.id).length, isSelected: selectedGroupId === group.id, onSelect: () => onSelect(group.id), onEdit: () => onEdit(group), onDelete: () => onDelete(group.id), color: color }, group.id))) })] }));
|
|
843
|
-
}
|
|
844
|
-
function GroupButton({ group, serviceCount, isSelected, onSelect, onEdit, onDelete, color, }) {
|
|
845
|
-
const [isHovered, setIsHovered] = useState(false);
|
|
846
|
-
const isSetup = group.costType === "SETUP";
|
|
847
|
-
return (_jsxs("div", { className: "relative", onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: [_jsxs("button", { onClick: onSelect, className: `w-full px-3.5 py-2.5 bg-transparent border-none rounded-[10px] cursor-pointer text-left transition-all duration-150 hover:bg-slate-50 ${isSelected
|
|
848
|
-
? `border-l-[3px] border-l-solid ${color === "amber"
|
|
849
|
-
? "bg-amber-50 border-l-amber-500"
|
|
850
|
-
: color === "emerald"
|
|
851
|
-
? "bg-emerald-50 border-l-emerald-500"
|
|
852
|
-
: "bg-violet-50 border-l-violet-500"}`
|
|
853
|
-
: ""}`, children: [_jsxs("div", { className: "flex items-center gap-1.5 flex-wrap", children: [_jsx("span", { className: "text-sm font-medium text-slate-800", children: group.name }), isSetup && (_jsx("span", { className: "px-1.5 py-0.5 text-[0.5625rem] font-bold uppercase tracking-[0.04em] rounded bg-amber-100 text-amber-700", children: "SETUP" })), group.isAddOn && (_jsx("span", { className: "px-1.5 py-0.5 text-[0.5625rem] font-bold uppercase tracking-[0.04em] rounded bg-violet-100 text-violet-700", children: "OPTIONAL" })), group.availableBillingCycles.length > 0 && !isSetup && (_jsx("span", { className: "px-1.5 py-0.5 text-[0.5625rem] font-bold uppercase tracking-[0.04em] rounded bg-emerald-100 text-emerald-700", children: group.availableBillingCycles
|
|
854
|
-
.map((c) => BILLING_CYCLE_SHORT_LABELS[c])
|
|
855
|
-
.join(", ") }))] }), _jsxs("div", { className: "flex items-center gap-2 text-xs text-slate-500 mt-0.5", children: [_jsxs("span", { children: [serviceCount, " services", serviceCount === 0 && (_jsxs("span", { className: "text-[0.6875rem] text-amber-600", children: [" ", "\u2014 add services"] }))] }), group.costType === "SETUP" && group.price != null && (_jsx("span", { className: "text-amber-600", children: formatPrice(group.price, "USD") })), group.isAddOn && group.price != null && (_jsx("span", { className: "text-amber-600", children: formatPrice(group.price, "USD") })), !isSetup &&
|
|
856
|
-
!group.isAddOn &&
|
|
857
|
-
(() => {
|
|
858
|
-
const monthlyPrice = group.tierDependentPricing?.[0]?.recurringPricing?.find((p) => p.billingCycle === "MONTHLY")?.amount ??
|
|
859
|
-
group.standalonePricing?.recurringPricing?.find((p) => p.billingCycle === "MONTHLY")?.amount;
|
|
860
|
-
return monthlyPrice != null && monthlyPrice > 0 ? (_jsxs("span", { className: "text-amber-600", children: [formatPrice(monthlyPrice, "USD"), "/mo"] })) : null;
|
|
861
|
-
})()] })] }), isHovered && (_jsxs("div", { className: "absolute right-2.5 top-1/2 -translate-y-1/2 flex gap-0.5", style: { animation: "so-fade-in 150ms ease-out" }, children: [_jsx("button", { onClick: (e) => {
|
|
862
|
-
e.stopPropagation();
|
|
863
|
-
onEdit();
|
|
864
|
-
}, className: "w-7 h-7 rounded-[10px] bg-white border border-slate-200 text-slate-400 cursor-pointer flex items-center justify-center transition-all duration-150 shadow-[0_1px_2px_rgba(0,0,0,0.05)] hover:scale-105 hover:shadow-[0_2px_4px_rgba(0,0,0,0.1)] active:scale-95 hover:bg-violet-50 hover:border-violet-300 hover:text-violet-600", "aria-label": "Edit group", children: _jsx("svg", { className: "w-3.5 h-3.5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M17 3a2.85 2.85 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" }) }) }), _jsx("button", { onClick: (e) => {
|
|
865
|
-
e.stopPropagation();
|
|
866
|
-
onDelete();
|
|
867
|
-
}, className: "w-7 h-7 rounded-[10px] bg-white border border-slate-200 text-slate-400 cursor-pointer flex items-center justify-center transition-all duration-150 shadow-[0_1px_2px_rgba(0,0,0,0.05)] hover:scale-105 hover:shadow-[0_2px_4px_rgba(0,0,0,0.1)] active:scale-95 hover:bg-rose-50 hover:border-rose-300 hover:text-rose-600", "aria-label": "Delete group", children: _jsx("svg", { className: "w-3.5 h-3.5", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2" }) }) })] }))] }));
|
|
868
|
-
}
|
|
869
|
-
function ServiceCard({ service, tiers, optionGroups, onUpdate, onDelete, onToggleTier, }) {
|
|
870
|
-
const [localTitle, setLocalTitle] = useState(service.title);
|
|
871
|
-
const [localDescription, setLocalDescription] = useState(service.description || "");
|
|
872
|
-
const [isExpanded, setIsExpanded] = useState(false);
|
|
873
|
-
// Sync local state when service changes
|
|
874
|
-
useEffect(() => {
|
|
875
|
-
setLocalTitle(service.title);
|
|
876
|
-
setLocalDescription(service.description || "");
|
|
877
|
-
}, [service.title, service.description]);
|
|
878
|
-
// Get tiers this service is included in
|
|
879
|
-
const includedTierIds = useMemo(() => {
|
|
880
|
-
const ids = new Set();
|
|
881
|
-
tiers.forEach((tier) => {
|
|
882
|
-
const hasService = tier.serviceLevels.some((sl) => sl.serviceId === service.id && sl.level === "INCLUDED");
|
|
883
|
-
if (hasService) {
|
|
884
|
-
ids.add(tier.id);
|
|
885
|
-
}
|
|
886
|
-
});
|
|
887
|
-
return ids;
|
|
888
|
-
}, [tiers, service.id]);
|
|
889
|
-
return (_jsxs("div", { className: `flex flex-col gap-4 p-[18px] bg-white border-[1.5px] rounded-[10px] transition-all duration-150 hover:border-slate-300 hover:shadow-sm ${service.isSetupFormation
|
|
890
|
-
? "bg-amber-50 border-amber-200 hover:border-amber-300"
|
|
891
|
-
: isExpanded
|
|
892
|
-
? "border-violet-300"
|
|
893
|
-
: "border-slate-200"}`, children: [_jsxs("div", { className: "flex gap-4", children: [_jsxs("div", { className: "flex-1 flex flex-col gap-3", children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [_jsx("input", { type: "text", value: localTitle, onChange: (e) => setLocalTitle(e.target.value), onBlur: () => {
|
|
894
|
-
if (localTitle !== service.title && localTitle.trim()) {
|
|
895
|
-
onUpdate(service, { title: localTitle.trim() });
|
|
896
|
-
}
|
|
897
|
-
}, className: "flex-1 text-base font-medium text-slate-800 bg-transparent border-none border-b-[1.5px] border-b-transparent px-0 pb-0.5 transition-all duration-150 hover:border-b-slate-300 focus:outline-none focus:border-b-violet-500", style: fontSans }), service.isSetupFormation && (_jsx("span", { className: "inline-flex items-center px-2.5 py-1 text-[0.6875rem] font-semibold uppercase tracking-[0.04em] rounded-full bg-amber-100 text-amber-700", children: "Setup Service" }))] }), _jsx("textarea", { value: localDescription, onChange: (e) => setLocalDescription(e.target.value), onBlur: () => {
|
|
898
|
-
if (localDescription !== (service.description || "")) {
|
|
899
|
-
onUpdate(service, { description: localDescription });
|
|
900
|
-
}
|
|
901
|
-
}, placeholder: "Add a description...", rows: 2, className: "w-full px-3 py-2.5 text-[0.8125rem] text-slate-600 bg-slate-50 border border-slate-200 rounded-md resize-none transition-all duration-150 hover:bg-white hover:border-slate-300 focus:outline-none focus:bg-white focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans }), tiers.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-1.5 mt-1", children: tiers.map((tier) => (_jsx("span", { className: `px-2 py-[3px] text-[0.625rem] font-semibold uppercase tracking-[0.04em] rounded ${includedTierIds.has(tier.id)
|
|
902
|
-
? "bg-emerald-100 text-emerald-700"
|
|
903
|
-
: "bg-slate-100 text-slate-400"}`, children: tier.name }, tier.id))) }))] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("button", { onClick: () => setIsExpanded(!isExpanded), className: "w-9 h-9 rounded-[10px] bg-slate-100 border-none text-slate-500 cursor-pointer flex items-center justify-center transition-all duration-150 hover:bg-violet-100 hover:text-violet-600", "aria-label": isExpanded ? "Collapse" : "Expand", children: _jsx("svg", { className: "w-[18px] h-[18px] transition-transform duration-150", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", style: { transform: isExpanded ? "rotate(180deg)" : "none" }, children: _jsx("path", { d: "M6 9l6 6 6-6" }) }) }), _jsx("button", { onClick: onDelete, className: "w-9 h-9 shrink-0 rounded-[10px] bg-transparent border-none text-slate-400 cursor-pointer flex items-center justify-center transition-all duration-150 hover:bg-rose-100 hover:text-rose-600", "aria-label": "Delete service", children: _jsx("svg", { className: "w-[18px] h-[18px]", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: _jsx("path", { d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" }) }) })] })] }), isExpanded && (_jsxs("div", { className: "border-t border-slate-200 mt-4 pt-4 flex flex-col gap-4", style: { animation: "so-fade-in 150ms ease-out" }, children: [_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Assign to Group" }), _jsxs("select", { value: service.optionGroupId || "", onChange: (e) => {
|
|
904
|
-
const newGroupId = e.target.value || null;
|
|
905
|
-
const targetGroup = newGroupId
|
|
906
|
-
? optionGroups.find((g) => g.id === newGroupId)
|
|
907
|
-
: null;
|
|
908
|
-
const isSetupGroup = targetGroup?.costType === "SETUP";
|
|
909
|
-
onUpdate(service, {
|
|
910
|
-
optionGroupId: newGroupId,
|
|
911
|
-
isSetupFormation: isSetupGroup,
|
|
912
|
-
});
|
|
913
|
-
}, className: "w-full px-3 py-2.5 text-sm text-slate-800 bg-white border-[1.5px] border-slate-200 rounded-md cursor-pointer transition-all duration-150 hover:border-slate-300 focus:outline-none focus:border-violet-500 focus:shadow-[0_0_0_2px_rgb(237,233,254)]", style: fontSans, children: [_jsx("option", { value: "", children: "No group (ungrouped)" }), optionGroups.map((group) => {
|
|
914
|
-
const label = group.costType === "SETUP"
|
|
915
|
-
? `${group.name} (Setup)`
|
|
916
|
-
: group.isAddOn
|
|
917
|
-
? `${group.name} (Add-on)`
|
|
918
|
-
: `${group.name} (Recurring)`;
|
|
919
|
-
return (_jsx("option", { value: group.id, children: label }, group.id));
|
|
920
|
-
})] })] }), tiers.length > 0 && (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("label", { className: "text-xs font-semibold uppercase tracking-[0.05em] text-slate-500", style: fontSans, children: "Include in Tiers" }), _jsx("div", { className: "grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-2", children: tiers.map((tier) => {
|
|
921
|
-
const isIncluded = includedTierIds.has(tier.id);
|
|
922
|
-
return (_jsxs("label", { className: `flex items-center gap-2.5 px-3 py-2.5 bg-white border-[1.5px] rounded-[10px] cursor-pointer transition-all duration-150 ${isIncluded
|
|
923
|
-
? "border-emerald-500 bg-emerald-50 hover:border-emerald-600"
|
|
924
|
-
: "border-slate-200 hover:border-slate-300 hover:bg-slate-50"}`, children: [_jsx("input", { type: "checkbox", checked: isIncluded, onChange: (e) => {
|
|
925
|
-
onToggleTier(service.id, tier.id, e.target.checked);
|
|
926
|
-
}, className: "w-[18px] h-[18px] shrink-0 accent-emerald-600 cursor-pointer" }), _jsx("span", { className: `flex-1 text-sm font-medium ${isIncluded ? "text-emerald-800" : "text-slate-800"}`, children: tier.name }), tier.pricing.amount !== null && (_jsxs("span", { className: `text-xs font-medium whitespace-nowrap ${isIncluded ? "text-emerald-600" : "text-slate-500"}`, children: ["$", tier.pricing.amount] }))] }, tier.id));
|
|
927
|
-
}) })] }))] }))] }));
|
|
928
|
-
}
|