@cosmicdrift/kumiko-samples 0.374.0 → 0.378.0
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/package.json +1 -1
- package/packages/bundled-features/package.json +6 -4
- package/packages/bundled-features/src/account-security/changes.json +6 -0
- package/packages/bundled-features/src/account-security/constants.ts +1 -0
- package/packages/bundled-features/src/account-security/index.ts +1 -0
- package/packages/bundled-features/src/admin-shell/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/audit/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/auth-email-password/mail-notifications.ts +1 -1
- package/packages/bundled-features/src/auth-email-password/web/auth-client.ts +1 -1
- package/packages/bundled-features/src/auth-email-password/web/auth-form-primitives.tsx +1 -1
- package/packages/bundled-features/src/auth-email-password/web/client-plugin.ts +3 -3
- package/packages/bundled-features/src/auth-email-password/web/default-topbar-actions.tsx +1 -1
- package/packages/bundled-features/src/auth-email-password/web/index.ts +1 -1
- package/packages/bundled-features/src/auth-email-password/web/session.tsx +1 -1
- package/packages/bundled-features/src/auth-email-password/web/tenant-menu-items.tsx +1 -1
- package/packages/bundled-features/src/auth-email-password/web/tenant-switcher.tsx +1 -1
- package/packages/bundled-features/src/auth-email-password/web/user-menu.tsx +1 -1
- package/packages/bundled-features/src/auth-foundation/changes.json +6 -0
- package/packages/bundled-features/src/auth-foundation/env.ts +27 -0
- package/packages/bundled-features/src/auth-foundation/index.ts +1 -0
- package/packages/bundled-features/src/billing-foundation/changes.json +6 -0
- package/packages/bundled-features/src/billing-foundation/consumer-protection/confirmation-mail.ts +1 -1
- package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-pages.ts +1 -1
- package/packages/bundled-features/src/billing-foundation/contact-card.ts +14 -0
- package/packages/bundled-features/src/billing-foundation/handlers/billing-plans.query.ts +1 -1
- package/packages/bundled-features/src/billing-foundation/index.ts +1 -0
- package/packages/bundled-features/src/billing-foundation/plan-catalog.ts +1 -0
- package/packages/bundled-features/src/billing-foundation/types.ts +12 -0
- package/packages/bundled-features/src/billing-foundation/validate-options.ts +16 -0
- package/packages/bundled-features/src/billing-foundation/web/billing-contact-plan.tsx +32 -0
- package/packages/bundled-features/src/billing-foundation/web/billing-plans-panel.tsx +5 -15
- package/packages/bundled-features/src/billing-foundation/web/cancel-contract-dialog.tsx +2 -2
- package/packages/bundled-features/src/billing-foundation/web/checkout-consent-dialog.tsx +1 -1
- package/packages/bundled-features/src/billing-foundation/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/billing-foundation/web/localized-params.ts +14 -0
- package/packages/bundled-features/src/cap-counter/changes.json +12 -0
- package/packages/bundled-features/src/cap-counter/stock-cap-guard.ts +9 -0
- package/packages/bundled-features/src/cap-overview/web/cap-cards-panel.tsx +3 -3
- package/packages/bundled-features/src/cap-overview/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/channel-email/changes.json +6 -0
- package/packages/bundled-features/src/channel-email/email-channel.ts +2 -1
- package/packages/bundled-features/src/compliance-profiles/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/config/feature.ts +2 -2
- package/packages/bundled-features/src/config/web/i18n.ts +1 -0
- package/packages/bundled-features/src/crypto-shredding/changes.json +6 -0
- package/packages/bundled-features/src/custom-fields/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/delivery/unsubscribe-page.ts +1 -1
- package/packages/bundled-features/src/delivery/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/delivery/web/delivery-status-cell.tsx +1 -1
- package/packages/bundled-features/src/feature-toggles/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/file-provider-s3/changes.json +6 -0
- package/packages/bundled-features/src/file-provider-s3/env-named-feature.ts +45 -0
- package/packages/bundled-features/src/file-provider-s3/env-schema.ts +20 -13
- package/packages/bundled-features/src/file-provider-s3/index.ts +4 -0
- package/packages/bundled-features/src/folders/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/folders/web/folder-section.tsx +3 -4
- package/packages/bundled-features/src/host-routing/README.md +7 -0
- package/packages/bundled-features/src/host-routing/changes.json +6 -0
- package/packages/bundled-features/src/host-routing/constants.ts +4 -0
- package/packages/bundled-features/src/host-routing/dispatch.ts +34 -26
- package/packages/bundled-features/src/host-routing/feature.ts +122 -41
- package/packages/bundled-features/src/host-routing/host.ts +28 -1
- package/packages/bundled-features/src/host-routing/index.ts +3 -0
- package/packages/bundled-features/src/host-routing/options.ts +45 -2
- package/packages/bundled-features/src/host-routing/redirects.ts +33 -0
- package/packages/bundled-features/src/host-routing/tenant-lookup.ts +65 -0
- package/packages/bundled-features/src/host-routing/validate-options.ts +48 -1
- package/packages/bundled-features/src/inbound-mail-foundation/changes.json +13 -0
- package/packages/bundled-features/src/inbound-mail-foundation/feature.ts +8 -0
- package/packages/bundled-features/src/inbound-mail-foundation/handlers/list-accounts.query.ts +11 -4
- package/packages/bundled-features/src/inbound-mail-foundation/i18n.ts +42 -0
- package/packages/bundled-features/src/inbound-mail-foundation/index.ts +4 -0
- package/packages/bundled-features/src/inbound-mail-foundation/screens.ts +100 -0
- package/packages/bundled-features/src/inbound-mail-foundation/types.ts +2 -2
- package/packages/bundled-features/src/jobs/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/legal-pages/changes.json +6 -0
- package/packages/bundled-features/src/legal-pages/feature.ts +14 -1
- package/packages/bundled-features/src/legal-pages/layout.ts +6 -6
- package/packages/bundled-features/src/legal-pages/web/client-plugin.ts +1 -1
- package/packages/bundled-features/src/mail-foundation/changes.json +6 -0
- package/packages/bundled-features/src/mail-foundation/feature.ts +21 -22
- package/packages/bundled-features/src/mail-foundation/i18n.ts +3 -2
- package/packages/bundled-features/src/mail-transport-smtp/i18n.ts +1 -1
- package/packages/bundled-features/src/managed-pages/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/notes-history/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/page-render/branding.ts +1 -1
- package/packages/bundled-features/src/page-render/layout.ts +2 -2
- package/packages/bundled-features/src/page-render/markdown.ts +1 -1
- package/packages/bundled-features/src/personal-access-tokens/i18n.ts +1 -1
- package/packages/bundled-features/src/personal-access-tokens/screens.ts +1 -1
- package/packages/bundled-features/src/secrets/feature.ts +4 -4
- package/packages/bundled-features/src/seo/sitemap.ts +1 -1
- package/packages/bundled-features/src/shared/mail-template-body.ts +1 -1
- package/packages/bundled-features/src/shared/purge-files-reaching-subject.ts +127 -2
- package/packages/bundled-features/src/tags/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/template-resolver/changes.json +38 -0
- package/packages/bundled-features/src/template-resolver/compile-document-body.ts +61 -3
- package/packages/bundled-features/src/template-resolver/constants.ts +3 -0
- package/packages/bundled-features/src/template-resolver/document-blocks.ts +36 -0
- package/packages/bundled-features/src/template-resolver/document-images.ts +29 -0
- package/packages/bundled-features/src/template-resolver/document-ops.ts +515 -0
- package/packages/bundled-features/src/template-resolver/document-sanitizer.ts +44 -0
- package/packages/bundled-features/src/template-resolver/document-schema.ts +5 -0
- package/packages/bundled-features/src/template-resolver/feature.ts +79 -34
- package/packages/bundled-features/src/template-resolver/handlers/bundle-import.ts +1 -0
- package/packages/bundled-features/src/template-resolver/handlers/collection-item.query.ts +1 -1
- package/packages/bundled-features/src/template-resolver/handlers/collection-list.query.ts +1 -1
- package/packages/bundled-features/src/template-resolver/handlers/collection-set.write.ts +2 -6
- package/packages/bundled-features/src/template-resolver/handlers/collection-shared.ts +0 -6
- package/packages/bundled-features/src/template-resolver/handlers/copy-locale.write.ts +67 -58
- package/packages/bundled-features/src/template-resolver/handlers/discard-draft.write.ts +36 -13
- package/packages/bundled-features/src/template-resolver/handlers/document-base.ts +86 -0
- package/packages/bundled-features/src/template-resolver/handlers/document-blocks.query.ts +48 -0
- package/packages/bundled-features/src/template-resolver/handlers/export-bundle.query.ts +11 -3
- package/packages/bundled-features/src/template-resolver/handlers/import-bundle.write.ts +37 -28
- package/packages/bundled-features/src/template-resolver/handlers/overview.query.ts +66 -62
- package/packages/bundled-features/src/template-resolver/handlers/patch-draft.write.ts +134 -0
- package/packages/bundled-features/src/template-resolver/handlers/preview.query.ts +2 -1
- package/packages/bundled-features/src/template-resolver/handlers/reset-to-system.write.ts +62 -49
- package/packages/bundled-features/src/template-resolver/handlers/resource-link-pdf.write.ts +44 -29
- package/packages/bundled-features/src/template-resolver/handlers/resource-remove.write.ts +52 -36
- package/packages/bundled-features/src/template-resolver/handlers/resource-upload.write.ts +126 -106
- package/packages/bundled-features/src/template-resolver/handlers/send-test-shared.ts +38 -0
- package/packages/bundled-features/src/template-resolver/handlers/send-test-status.query.ts +31 -0
- package/packages/bundled-features/src/template-resolver/handlers/send-test.write.ts +105 -110
- package/packages/bundled-features/src/template-resolver/handlers/set.write.ts +110 -103
- package/packages/bundled-features/src/template-resolver/handlers/template-write.ts +22 -1
- package/packages/bundled-features/src/template-resolver/handlers/toggle-status.write.ts +56 -28
- package/packages/bundled-features/src/template-resolver/handlers/upsert-tenant.write.ts +38 -29
- package/packages/bundled-features/src/template-resolver/handlers/validate.query.ts +24 -9
- package/packages/bundled-features/src/template-resolver/index.ts +8 -1
- package/packages/bundled-features/src/template-resolver/{web/placeholder-text.ts → placeholder-text.ts} +1 -1
- package/packages/bundled-features/src/template-resolver/qualified-names.ts +4 -0
- package/packages/bundled-features/src/template-resolver/seeding.ts +3 -1
- package/packages/bundled-features/src/template-resolver/template-bundle.ts +6 -1
- package/packages/bundled-features/src/template-resolver/template-edit-policy.ts +91 -0
- package/packages/bundled-features/src/template-resolver/template-preview.ts +32 -10
- package/packages/bundled-features/src/template-resolver/template-validation.ts +32 -11
- package/packages/bundled-features/src/template-resolver/web/client-plugin.tsx +3 -3
- package/packages/bundled-features/src/template-resolver/web/document-editor-extensions.ts +29 -0
- package/packages/bundled-features/src/template-resolver/web/document-tiptap-editor.tsx +43 -5
- package/packages/bundled-features/src/template-resolver/web/document-toolbar-blocks.ts +9 -33
- package/packages/bundled-features/src/template-resolver/web/i18n.ts +30 -0
- package/packages/bundled-features/src/template-resolver/web/placeholder-line-editor.tsx +2 -2
- package/packages/bundled-features/src/tenant/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/tenant/web/member-status-cell.tsx +1 -1
- package/packages/bundled-features/src/tier-engine/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/user-data-rights/changes.json +6 -0
- package/packages/bundled-features/src/user-data-rights/env.ts +15 -0
- package/packages/bundled-features/src/user-data-rights/feature.ts +4 -2
- package/packages/bundled-features/src/user-data-rights/index.ts +1 -0
- package/packages/bundled-features/src/user-data-rights/lib/mail-transport-resolver.ts +1 -1
- package/packages/bundled-features/src/user-data-rights/lib/storage-provider-resolver.ts +1 -1
- package/packages/bundled-features/src/user-data-rights/mail-notifications.ts +1 -1
- package/packages/bundled-features/src/user-data-rights/web/client-plugin.tsx +1 -1
- package/packages/bundled-features/src/user-data-rights/web/privacy-center-screen.tsx +2 -2
- package/packages/bundled-features/src/waitlist/changes.json +6 -0
- package/packages/bundled-features/src/waitlist/legacy-migrate.ts +51 -2
- package/samples/apps/admin-console/package.json +0 -3
- package/samples/apps/admin-console/src/app/client.tsx +1 -1
- package/samples/apps/admin-console/src/app/shell.tsx +1 -1
- package/samples/apps/config-demo/package.json +1 -3
- package/samples/apps/config-demo/src/app/client.tsx +1 -1
- package/samples/apps/config-demo/src/app/shell.tsx +2 -2
- package/samples/apps/config-demo/src/features/demo/web/index.ts +1 -1
- package/samples/apps/config-demo/tsconfig.json +0 -12
- package/samples/apps/marketing-demo/package.json +1 -3
- package/samples/apps/marketing-demo/src/app/client.tsx +1 -1
- package/samples/apps/marketing-demo/src/app/shell.tsx +1 -1
- package/samples/apps/marketing-demo/src/features/assets/web/index.ts +1 -1
- package/samples/apps/marketing-demo/src/features/helpdesk/web/index.ts +1 -1
- package/samples/apps/showcase/package.json +1 -3
- package/samples/apps/showcase/src/app/client.tsx +1 -1
- package/samples/apps/showcase/src/app/shell.tsx +1 -1
- package/samples/apps/showcase/src/features/demos/web/index.ts +1 -1
- package/samples/apps/showcase/src/features/demos/web/pages/sidebar-panel.tsx +1 -1
- package/samples/apps/showcase/src/features/demos/web/pages/toast.tsx +1 -1
- package/samples/apps/showcase/src/features/items/web/index.ts +1 -1
- package/samples/apps/styleguide/package.json +1 -3
- package/samples/apps/styleguide/src/app/client.tsx +1 -1
- package/samples/apps/styleguide/src/app/shell.tsx +2 -2
- package/samples/apps/styleguide/src/features/ai-settings/web.ts +1 -1
- package/samples/apps/styleguide/src/features/content/web.tsx +2 -2
- package/samples/apps/styleguide/src/features/demo/web.ts +1 -1
- package/samples/apps/styleguide/src/features/examples/web.ts +1 -1
- package/samples/apps/styleguide/src/features/gallery/web/Gallery.tsx +1 -1
- package/samples/apps/styleguide/src/features/gallery/web/index.ts +1 -1
- package/samples/apps/styleguide/src/features/widgets/demo-locale.ts +1 -1
- package/samples/apps/styleguide/src/features/widgets/lib/format.ts +1 -1
- package/samples/apps/styleguide/src/features/widgets/web/DashboardFilterEcho.tsx +1 -1
- package/samples/apps/styleguide/src/features/widgets/web/FormExamples.tsx +1 -1
- package/samples/apps/styleguide/src/features/widgets/web/Widgets.tsx +1 -1
- package/samples/apps/styleguide/src/features/widgets/web/index.ts +1 -1
- package/samples/apps/styleguide/tsconfig.json +0 -12
- package/samples/apps/ui-walkthrough/package.json +1 -3
- package/samples/apps/ui-walkthrough/src/app/client.tsx +1 -1
- package/samples/apps/ui-walkthrough/src/app/help-action.tsx +37 -0
- package/samples/apps/ui-walkthrough/src/app/seed-templates.ts +2 -0
- package/samples/apps/ui-walkthrough/src/app/shell.tsx +7 -1
- package/samples/apps/ui-walkthrough/src/app/template-seed-data.ts +20 -0
- package/samples/apps/ui-walkthrough/src/features/billing/web/index.ts +1 -1
- package/samples/apps/ui-walkthrough/src/features/rental/feature.ts +65 -1
- package/samples/apps/ui-walkthrough/src/features/rental/i18n.ts +70 -0
- package/samples/apps/ui-walkthrough/src/features/rental/invoice-receive.ts +20 -0
- package/samples/apps/ui-walkthrough/src/features/rental/lease-support.ts +15 -0
- package/samples/apps/ui-walkthrough/src/features/rental/qualified-names.ts +2 -0
- package/samples/apps/ui-walkthrough/src/features/rental/screens.ts +79 -0
- package/samples/apps/ui-walkthrough/src/features/rental/web/index.ts +3 -1
- package/samples/apps/ui-walkthrough/src/features/rental/web/upload-standard-layout.tsx +61 -0
- package/samples/apps/ui-walkthrough/src/features/tasks/i18n.ts +8 -0
- package/samples/apps/ui-walkthrough/src/features/tasks/web/index.ts +1 -1
- package/samples/apps/ui-walkthrough/src/features/vehicles/web/index.ts +1 -1
- package/samples/apps/ui-walkthrough/src/run-config.ts +32 -3
- package/samples/apps/use-all-bundled/bin/main.ts +3 -2
- package/samples/apps/use-all-bundled/e2e-billing-gallery/gallery-features.ts +12 -0
- package/samples/apps/use-all-bundled/e2e-billing-gallery/server.ts +1 -1
- package/samples/apps/use-all-bundled/feature-manifest.json +3 -2
- package/samples/apps/use-all-bundled/package.json +1 -3
- package/samples/apps/use-all-bundled/src/app/client.tsx +1 -1
- package/samples/apps/use-all-bundled/src/app/dev-app-options.ts +5 -4
- package/samples/apps/use-all-bundled/src/app/shell.tsx +1 -1
- package/samples/apps/use-all-bundled/src/run-config.ts +10 -1
- package/samples/apps/workspaces/package.json +1 -3
- package/samples/apps/workspaces/src/app/client.tsx +1 -1
- package/samples/apps/workspaces/src/app/shell.tsx +1 -1
- package/samples/apps/workspaces/src/features/demo/web/index.ts +1 -1
- package/samples/apps/workspaces/src/features/demo-driver/web/index.ts +1 -1
- package/samples/recipes/apex-landing/package.json +1 -1
- package/samples/recipes/apex-landing/src/feature.ts +1 -1
- package/samples/recipes/apex-surface-auth/README.md +1 -1
- package/samples/recipes/apex-surface-auth/src/feature.ts +2 -2
- package/samples/recipes/compose-stacks/README.md +7 -4
- package/samples/recipes/delivery-notifications/README.md +1 -1
- package/samples/recipes/embedded/README.md +8 -0
- package/samples/recipes/embedded/src/feature.ts +8 -0
- package/samples/recipes/embedded/src/handlers/invoice-receive.write.ts +38 -0
- package/samples/recipes/embedded/src/screens/invoice-receive.screen.ts +59 -0
- package/samples/recipes/embedded-entity-form/package.json +0 -1
- package/samples/recipes/embedded-entity-form/src/web/accept-suggestion-drawer.tsx +1 -1
- package/samples/recipes/notes-history-basic/README.md +1 -1
- package/samples/recipes/record-detail-layout/package.json +0 -1
- package/samples/recipes/tags-basic/README.md +1 -1
- package/samples/recipes/user-profile/README.md +1 -1
- package/samples/recipes/wizard-form/package.json +0 -1
- package/samples/recipes/wizard-form/src/web/index.ts +2 -2
- package/samples/recipes/wizard-form/src/web/listing-review-section.tsx +2 -2
- package/samples/recipes/writeform-section/package.json +0 -1
|
@@ -11,10 +11,8 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@cosmicdrift/kumiko-bundled-features": "workspace:*",
|
|
13
13
|
"@cosmicdrift/kumiko-dev-server": "workspace:*",
|
|
14
|
-
"@cosmicdrift/kumiko-
|
|
14
|
+
"@cosmicdrift/kumiko-renderer": "workspace:*",
|
|
15
15
|
"@cosmicdrift/kumiko-framework": "workspace:*",
|
|
16
|
-
"@cosmicdrift/kumiko-headless": "workspace:*",
|
|
17
|
-
"@cosmicdrift/kumiko-renderer-web": "workspace:*",
|
|
18
16
|
"@cosmicdrift/kumiko-types": "workspace:*",
|
|
19
17
|
"react": "^19.2.6",
|
|
20
18
|
"react-dom": "^19.2.6",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// shared shell, alles aus dem Framework-Default.
|
|
3
3
|
|
|
4
4
|
import { localeDeClient } from "@cosmicdrift/kumiko-locale-de/web";
|
|
5
|
-
import { createKumikoApp } from "@cosmicdrift/kumiko-renderer
|
|
5
|
+
import { createKumikoApp } from "@cosmicdrift/kumiko-renderer/web";
|
|
6
6
|
import { assetsClient } from "../features/assets/web";
|
|
7
7
|
import { helpdeskClient } from "../features/helpdesk/web";
|
|
8
8
|
import { AppShell } from "./shell";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// „Kumiko Demo", Light-Mode-default (kein Theme-Toggle für screenshots
|
|
3
3
|
// damit immer der gleiche Look).
|
|
4
4
|
|
|
5
|
-
import { type AppSchema, DefaultAppShell } from "@cosmicdrift/kumiko-renderer
|
|
5
|
+
import { type AppSchema, DefaultAppShell } from "@cosmicdrift/kumiko-renderer/web";
|
|
6
6
|
import type { ReactNode } from "react";
|
|
7
7
|
|
|
8
8
|
// Logo-Kachel + Wortmarke — wie SidebarBrand (sidebar-brand.tsx). Die
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Assets — ClientFeatureDefinition. Pure Schema-driven, keine Custom-
|
|
2
2
|
// Components. Render läuft über Standard-RenderList + RenderEdit.
|
|
3
3
|
|
|
4
|
-
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer
|
|
4
|
+
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
|
|
5
5
|
import { assetsTranslations } from "../i18n";
|
|
6
6
|
|
|
7
7
|
export const assetsClient: ClientFeatureDefinition = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer
|
|
1
|
+
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
|
|
2
2
|
import { helpdeskTranslations } from "../i18n";
|
|
3
3
|
|
|
4
4
|
export const helpdeskClient: ClientFeatureDefinition = {
|
|
@@ -11,10 +11,8 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@cosmicdrift/kumiko-bundled-features": "workspace:*",
|
|
13
13
|
"@cosmicdrift/kumiko-dev-server": "workspace:*",
|
|
14
|
-
"@cosmicdrift/kumiko-
|
|
14
|
+
"@cosmicdrift/kumiko-renderer": "workspace:*",
|
|
15
15
|
"@cosmicdrift/kumiko-framework": "workspace:*",
|
|
16
|
-
"@cosmicdrift/kumiko-headless": "workspace:*",
|
|
17
|
-
"@cosmicdrift/kumiko-renderer-web": "workspace:*",
|
|
18
16
|
"lucide-react": "^1.14.0",
|
|
19
17
|
"react": "^19.2.6",
|
|
20
18
|
"react-dom": "^19.2.6",
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// via clientFeatures.components.
|
|
5
5
|
|
|
6
6
|
import { localeDeClient } from "@cosmicdrift/kumiko-locale-de/web";
|
|
7
|
-
import { createKumikoApp } from "@cosmicdrift/kumiko-renderer
|
|
7
|
+
import { createKumikoApp } from "@cosmicdrift/kumiko-renderer/web";
|
|
8
8
|
import { demosClient } from "../features/demos/web";
|
|
9
9
|
import { itemsClient } from "../features/items/web";
|
|
10
10
|
import { AppShell } from "./shell";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// merged das in den CustomScreens-Context, KumikoScreen schaut darin
|
|
4
4
|
// nach wenn ein Schema-Screen `type: "custom"` hat.
|
|
5
5
|
|
|
6
|
-
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer
|
|
6
|
+
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
|
|
7
7
|
import { demosTranslations } from "../i18n";
|
|
8
8
|
import { BannerDemo } from "./pages/banner";
|
|
9
9
|
import { ButtonsDemo } from "./pages/buttons";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { usePrimitives } from "@cosmicdrift/kumiko-renderer";
|
|
2
|
-
import { SidebarPanel } from "@cosmicdrift/kumiko-renderer
|
|
2
|
+
import { SidebarPanel } from "@cosmicdrift/kumiko-renderer/web";
|
|
3
3
|
import { type ReactNode, useState } from "react";
|
|
4
4
|
import { DemoPage, DemoSection } from "../components/page";
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { usePrimitives } from "@cosmicdrift/kumiko-renderer";
|
|
2
|
-
import { useToast } from "@cosmicdrift/kumiko-renderer
|
|
2
|
+
import { useToast } from "@cosmicdrift/kumiko-renderer/web";
|
|
3
3
|
import { type ReactNode, useState } from "react";
|
|
4
4
|
import { DemoPage, DemoSection } from "../components/page";
|
|
5
5
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// Native-Plattform würde parallel dazu in features/items/native/
|
|
7
7
|
// liegen — translations werden geteilt, components/UI nicht.
|
|
8
8
|
|
|
9
|
-
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer
|
|
9
|
+
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
|
|
10
10
|
import { itemsTranslations } from "../i18n";
|
|
11
11
|
|
|
12
12
|
export const itemsClient: ClientFeatureDefinition = {
|
|
@@ -3,10 +3,8 @@
|
|
|
3
3
|
"dependencies": {
|
|
4
4
|
"@cosmicdrift/kumiko-bundled-features": "workspace:*",
|
|
5
5
|
"@cosmicdrift/kumiko-dev-server": "workspace:*",
|
|
6
|
-
"@cosmicdrift/kumiko-
|
|
6
|
+
"@cosmicdrift/kumiko-renderer": "workspace:*",
|
|
7
7
|
"@cosmicdrift/kumiko-framework": "workspace:*",
|
|
8
|
-
"@cosmicdrift/kumiko-headless": "workspace:*",
|
|
9
|
-
"@cosmicdrift/kumiko-renderer-web": "workspace:*",
|
|
10
8
|
"react": "^19.2.6",
|
|
11
9
|
"react-dom": "^19.2.6",
|
|
12
10
|
"@cosmicdrift/kumiko-locale-de": "workspace:*"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { configClient } from "@cosmicdrift/kumiko-bundled-features/config/web";
|
|
2
2
|
import { localeDeClient } from "@cosmicdrift/kumiko-locale-de/web";
|
|
3
|
-
import { createKumikoApp } from "@cosmicdrift/kumiko-renderer
|
|
3
|
+
import { createKumikoApp } from "@cosmicdrift/kumiko-renderer/web";
|
|
4
4
|
import { aiSettingsClient } from "../features/ai-settings/web";
|
|
5
5
|
import { contentClient } from "../features/content/web";
|
|
6
6
|
import { styleguideClient } from "../features/demo/web";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useNav } from "@cosmicdrift/kumiko-renderer";
|
|
2
|
-
import type { AppSchema } from "@cosmicdrift/kumiko-renderer
|
|
2
|
+
import type { AppSchema } from "@cosmicdrift/kumiko-renderer/web";
|
|
3
3
|
import {
|
|
4
4
|
DefaultAppShell,
|
|
5
5
|
EditorPanel,
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
SidebarBrand,
|
|
8
8
|
SidebarUser,
|
|
9
9
|
useResolvers,
|
|
10
|
-
} from "@cosmicdrift/kumiko-renderer
|
|
10
|
+
} from "@cosmicdrift/kumiko-renderer/web";
|
|
11
11
|
import { GalleryVerticalEnd } from "lucide-react";
|
|
12
12
|
import type { ReactNode } from "react";
|
|
13
13
|
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
// sofort im Sidebar-Tree. Der content:edit-Resolver rendert das Anlege-
|
|
7
7
|
// Formular (leeres target) bzw. die Detail-Ansicht (target mit id).
|
|
8
8
|
|
|
9
|
-
import { CSRF_HEADER_NAME, readCsrfToken } from "@cosmicdrift/kumiko-dispatcher-live";
|
|
10
9
|
import type {
|
|
11
10
|
TargetRef,
|
|
12
11
|
TreeChildrenSubscribe,
|
|
13
12
|
TreeNode,
|
|
14
13
|
} from "@cosmicdrift/kumiko-framework/engine";
|
|
15
14
|
import { useDispatcher, usePrimitives, useQuery } from "@cosmicdrift/kumiko-renderer";
|
|
16
|
-
import
|
|
15
|
+
import { CSRF_HEADER_NAME, readCsrfToken } from "@cosmicdrift/kumiko-renderer/live";
|
|
16
|
+
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
|
|
17
17
|
import { type FormEvent, type ReactNode, useEffect, useState } from "react";
|
|
18
18
|
|
|
19
19
|
type Page = { readonly id: string; readonly slug: string; readonly title: string };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { formatMoney } from "@cosmicdrift/kumiko-renderer
|
|
1
|
+
import { formatMoney } from "@cosmicdrift/kumiko-renderer/web";
|
|
2
2
|
|
|
3
3
|
// `locale` comes from useLocale(), whose default resolver reads it
|
|
4
4
|
// unvalidated from localStorage/navigator.language — a structurally invalid
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// DashboardFilterDefinition in feature.ts).
|
|
5
5
|
|
|
6
6
|
import { type ExtensionSectionProps, useTranslation } from "@cosmicdrift/kumiko-renderer";
|
|
7
|
-
import { SectionCard } from "@cosmicdrift/kumiko-renderer
|
|
7
|
+
import { SectionCard } from "@cosmicdrift/kumiko-renderer/web";
|
|
8
8
|
import type { ReactNode } from "react";
|
|
9
9
|
|
|
10
10
|
export function DashboardFilterEcho({ filterParams }: ExtensionSectionProps): ReactNode {
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
TextField,
|
|
37
37
|
TimeseriesChart,
|
|
38
38
|
useDraft,
|
|
39
|
-
} from "@cosmicdrift/kumiko-renderer
|
|
39
|
+
} from "@cosmicdrift/kumiko-renderer/web";
|
|
40
40
|
import { Wallet } from "lucide-react";
|
|
41
41
|
import { type ReactNode, useEffect, useMemo, useState } from "react";
|
|
42
42
|
import { euro, percent } from "../lib/format";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
|
|
2
|
-
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer
|
|
2
|
+
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
|
|
3
3
|
import { WIDGETS_I18N } from "../i18n";
|
|
4
4
|
import { DashboardFilterEcho } from "./DashboardFilterEcho";
|
|
5
5
|
import { DashboardKpiIcon } from "./DashboardKpiIcon";
|
|
@@ -14,18 +14,6 @@
|
|
|
14
14
|
"@cosmicdrift/kumiko-dev-server/*": [
|
|
15
15
|
"../../../packages/dev-server/src/*"
|
|
16
16
|
],
|
|
17
|
-
"@cosmicdrift/kumiko-renderer-web": [
|
|
18
|
-
"../../../packages/renderer-web/src/index.ts"
|
|
19
|
-
],
|
|
20
|
-
"@cosmicdrift/kumiko-renderer-web/*": [
|
|
21
|
-
"../../../packages/renderer-web/src/*"
|
|
22
|
-
],
|
|
23
|
-
"@cosmicdrift/kumiko-dispatcher-live": [
|
|
24
|
-
"../../../packages/dispatcher-live/src/index.ts"
|
|
25
|
-
],
|
|
26
|
-
"@cosmicdrift/kumiko-headless": [
|
|
27
|
-
"../../../packages/headless/src/index.ts"
|
|
28
|
-
],
|
|
29
17
|
"@cosmicdrift/kumiko-renderer": [
|
|
30
18
|
"../../../packages/renderer/src/index.ts"
|
|
31
19
|
],
|
|
@@ -11,12 +11,10 @@
|
|
|
11
11
|
"@cosmicdrift/kumiko-bundled-features": "workspace:*",
|
|
12
12
|
"@cosmicdrift/kumiko-dev-server": "workspace:*",
|
|
13
13
|
"@cosmicdrift/kumiko-document-designer": "workspace:*",
|
|
14
|
-
"@cosmicdrift/kumiko-
|
|
14
|
+
"@cosmicdrift/kumiko-renderer": "workspace:*",
|
|
15
15
|
"@cosmicdrift/kumiko-framework": "workspace:*",
|
|
16
|
-
"@cosmicdrift/kumiko-headless": "workspace:*",
|
|
17
16
|
"@cosmicdrift/kumiko-renderer-mail-html": "workspace:*",
|
|
18
17
|
"@cosmicdrift/kumiko-renderer-puppeteer-client": "workspace:*",
|
|
19
|
-
"@cosmicdrift/kumiko-renderer-web": "workspace:*",
|
|
20
18
|
"@cosmicdrift/kumiko-server-runtime": "workspace:*",
|
|
21
19
|
"react": "^19.2.6",
|
|
22
20
|
"react-dom": "^19.2.6",
|
|
@@ -5,7 +5,7 @@ import { emailPasswordClient } from "@cosmicdrift/kumiko-bundled-features/auth-e
|
|
|
5
5
|
import { textBlocksClient } from "@cosmicdrift/kumiko-bundled-features/template-resolver/web";
|
|
6
6
|
import { documentDesignerClient } from "@cosmicdrift/kumiko-document-designer/web";
|
|
7
7
|
import { localeDeClient } from "@cosmicdrift/kumiko-locale-de/web";
|
|
8
|
-
import { createKumikoApp } from "@cosmicdrift/kumiko-renderer
|
|
8
|
+
import { createKumikoApp } from "@cosmicdrift/kumiko-renderer/web";
|
|
9
9
|
import { billingClient } from "../features/billing/web";
|
|
10
10
|
import { rentalClient } from "../features/rental/web";
|
|
11
11
|
import { tasksClient } from "../features/tasks/web";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useTranslation } from "@cosmicdrift/kumiko-renderer";
|
|
2
|
+
import { Drawer } from "@cosmicdrift/kumiko-renderer/web";
|
|
3
|
+
import { CircleHelp } from "lucide-react";
|
|
4
|
+
import { type ReactNode, useState } from "react";
|
|
5
|
+
|
|
6
|
+
// A non-modal side panel: the screen behind stays usable and narrows instead of being covered.
|
|
7
|
+
export function HelpAction(): ReactNode {
|
|
8
|
+
const t = useTranslation();
|
|
9
|
+
const [open, setOpen] = useState(false);
|
|
10
|
+
return (
|
|
11
|
+
<>
|
|
12
|
+
<button
|
|
13
|
+
type="button"
|
|
14
|
+
data-testid="help-action"
|
|
15
|
+
aria-label={t("tasks.help.label")}
|
|
16
|
+
aria-pressed={open}
|
|
17
|
+
onClick={() => setOpen((current) => !current)}
|
|
18
|
+
className="inline-flex size-9 items-center justify-center rounded-md border border-border bg-card text-foreground hover:bg-accent"
|
|
19
|
+
>
|
|
20
|
+
<CircleHelp className="h-4 w-4" aria-hidden="true" />
|
|
21
|
+
</button>
|
|
22
|
+
<Drawer
|
|
23
|
+
open={open}
|
|
24
|
+
onOpenChange={setOpen}
|
|
25
|
+
side="right"
|
|
26
|
+
modal={false}
|
|
27
|
+
belowHeader
|
|
28
|
+
width={360}
|
|
29
|
+
title={t("tasks.help.label")}
|
|
30
|
+
description={t("tasks.help.description")}
|
|
31
|
+
testId="help-drawer"
|
|
32
|
+
>
|
|
33
|
+
<p className="py-2 text-sm text-muted-foreground">{t("tasks.help.body")}</p>
|
|
34
|
+
</Drawer>
|
|
35
|
+
</>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
SYSTEM_INVOICE_DOCUMENTS,
|
|
32
32
|
SYSTEM_INVOICE_ISSUED,
|
|
33
33
|
SYSTEM_PDF_LAYOUT,
|
|
34
|
+
SYSTEM_PROPERTY_EXPOSE,
|
|
34
35
|
SYSTEM_TENANCY_CERTIFICATE,
|
|
35
36
|
SYSTEM_TERMS_CHANGED,
|
|
36
37
|
TENANT_INVOICE_OVERRIDES,
|
|
@@ -168,6 +169,7 @@ export const seedTemplates: SeedFn = async (stack) => {
|
|
|
168
169
|
await upsertSystem(SYSTEM_INVOICE_ISSUED);
|
|
169
170
|
await upsertSystem(SYSTEM_TERMS_CHANGED);
|
|
170
171
|
for (const document of SYSTEM_INVOICE_DOCUMENTS) await upsertSystem(document);
|
|
172
|
+
await upsertSystem(SYSTEM_PROPERTY_EXPOSE);
|
|
171
173
|
const certificate = await upsertSystem(SYSTEM_TENANCY_CERTIFICATE);
|
|
172
174
|
await stack.http.writeOk(
|
|
173
175
|
TemplateResolverHandlers.archiveSystem,
|
|
@@ -14,8 +14,9 @@ import {
|
|
|
14
14
|
SidebarBrand,
|
|
15
15
|
ThemeMenuItem,
|
|
16
16
|
ThemeToggle,
|
|
17
|
+
useNav,
|
|
17
18
|
useTranslation,
|
|
18
|
-
} from "@cosmicdrift/kumiko-renderer
|
|
19
|
+
} from "@cosmicdrift/kumiko-renderer/web";
|
|
19
20
|
import { MoonStar, Sun } from "lucide-react";
|
|
20
21
|
import type { ReactNode } from "react";
|
|
21
22
|
import { AssistantAction } from "./assistant-action";
|
|
@@ -25,8 +26,10 @@ import {
|
|
|
25
26
|
NORDLICHT_TENANT_ID,
|
|
26
27
|
NORDLICHT_TENANT_NAME,
|
|
27
28
|
} from "./auth-constants";
|
|
29
|
+
import { HelpAction } from "./help-action";
|
|
28
30
|
|
|
29
31
|
const APP_NAME = "Kumiko Walkthrough";
|
|
32
|
+
const HELP_SCREEN_ID = "vehicle-edit";
|
|
30
33
|
|
|
31
34
|
const tenantName = (tenantId: string): string => {
|
|
32
35
|
if (tenantId === DEV_TENANT_ID) return "Dev Tenant";
|
|
@@ -49,6 +52,7 @@ export function AppShell({
|
|
|
49
52
|
}): ReactNode {
|
|
50
53
|
const t = useTranslation();
|
|
51
54
|
const session = useSession();
|
|
55
|
+
const nav = useNav();
|
|
52
56
|
// Without the user the shell hides role-gated navs and KumikoScreen denies role-gated screens.
|
|
53
57
|
const user = session.user !== null ? { id: session.user.id, roles: session.roles } : undefined;
|
|
54
58
|
return (
|
|
@@ -58,6 +62,8 @@ export function AppShell({
|
|
|
58
62
|
{...(user !== undefined && { user })}
|
|
59
63
|
headerActions={
|
|
60
64
|
<>
|
|
65
|
+
{/* Only here: the editor screens need the header width for their own actions. */}
|
|
66
|
+
{nav.route?.screenId === HELP_SCREEN_ID && <HelpAction />}
|
|
61
67
|
<AssistantAction />
|
|
62
68
|
<ThemeToggle />
|
|
63
69
|
</>
|
|
@@ -535,6 +535,26 @@ export const SYSTEM_TENANCY_CERTIFICATE: SeedTemplate = {
|
|
|
535
535
|
},
|
|
536
536
|
};
|
|
537
537
|
|
|
538
|
+
export const SYSTEM_PROPERTY_EXPOSE: SeedTemplate = {
|
|
539
|
+
slug: "rental:property-expose",
|
|
540
|
+
kind: "document-pdf",
|
|
541
|
+
locale: "de",
|
|
542
|
+
title: "Exposé",
|
|
543
|
+
content: [
|
|
544
|
+
`<h1>Exposé ${v("propertyAddress")}</h1>`,
|
|
545
|
+
`<p>${v("propertySummary")}</p>`,
|
|
546
|
+
"<h2>Objektfotos</h2>",
|
|
547
|
+
'<div data-images="photos"></div>',
|
|
548
|
+
].join(""),
|
|
549
|
+
meta: { layoutSlug: "default", pageFormat: "A4", fileName: "Expose.pdf" },
|
|
550
|
+
variableSchema: {
|
|
551
|
+
propertyAddress: { type: "text", required: true },
|
|
552
|
+
propertySummary: { type: "text", required: true },
|
|
553
|
+
// The app passes the FileRef ids of the property photos when it renders the PDF.
|
|
554
|
+
photos: { type: "images", label: "Objektfotos" },
|
|
555
|
+
},
|
|
556
|
+
};
|
|
557
|
+
|
|
538
558
|
// Two other tenants customise the invoice for the "Anpassungen der Mandanten" drawer: one
|
|
539
559
|
// published copy with a second save, one draft.
|
|
540
560
|
export type TenantInvoiceOverride = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer
|
|
1
|
+
import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
|
|
2
2
|
import { billingTranslations } from "../i18n";
|
|
3
3
|
|
|
4
4
|
export const billingClient: ClientFeatureDefinition = {
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import type { EventStoreExecutor } from "@cosmicdrift/kumiko-framework/db";
|
|
2
|
-
import { defineFeature, i18nKey } from "@cosmicdrift/kumiko-framework/engine";
|
|
2
|
+
import { defineFeature, defineWriteHandler, i18nKey } from "@cosmicdrift/kumiko-framework/engine";
|
|
3
3
|
import { failNotFound } from "@cosmicdrift/kumiko-framework/errors";
|
|
4
|
+
import {
|
|
5
|
+
renderPdfBeforeTransaction,
|
|
6
|
+
storeRenderedPdf,
|
|
7
|
+
} from "@cosmicdrift/kumiko-renderer-puppeteer-client";
|
|
4
8
|
import { z } from "zod";
|
|
5
9
|
import { openToAllSignedIn, toKeyFirst } from "../translations";
|
|
6
10
|
import { leaseEntity, leasePartyEntity, leasePositionEntity } from "./entities";
|
|
7
11
|
import { rentalTranslations } from "./i18n";
|
|
12
|
+
import { receiveInvoicePayloadSchema } from "./invoice-receive";
|
|
8
13
|
import {
|
|
9
14
|
dayBefore,
|
|
15
|
+
fileRefIdsPayloadSchema,
|
|
10
16
|
formatGermanDate,
|
|
11
17
|
formatGermanMoney,
|
|
12
18
|
germanStatusLabel,
|
|
@@ -18,6 +24,7 @@ import {
|
|
|
18
24
|
positionExecutor,
|
|
19
25
|
positionListRowSchema,
|
|
20
26
|
positionRowSchema,
|
|
27
|
+
propertyExposePayloadSchema,
|
|
21
28
|
type RecordedPositionItem,
|
|
22
29
|
recordPositionsPayloadSchema,
|
|
23
30
|
rentAdjustPayloadSchema,
|
|
@@ -32,8 +39,10 @@ import {
|
|
|
32
39
|
leaseListScreen,
|
|
33
40
|
leaseListShortScreen,
|
|
34
41
|
leaseSuccessionListScreen,
|
|
42
|
+
leaseUnterlagenScreen,
|
|
35
43
|
partyEditScreen,
|
|
36
44
|
positionEditScreen,
|
|
45
|
+
receiveInvoiceScreen,
|
|
37
46
|
recordPositionsScreen,
|
|
38
47
|
rentalDashboardScreen,
|
|
39
48
|
} from "./screens";
|
|
@@ -95,6 +104,17 @@ export const rentalFeature = defineFeature("rental", (r) => {
|
|
|
95
104
|
});
|
|
96
105
|
r.crud("leaseParty", leasePartyEntity, { write: open, read: open });
|
|
97
106
|
|
|
107
|
+
r.queryHandler({
|
|
108
|
+
name: "lease:unterlagen",
|
|
109
|
+
schema: fileRefIdsPayloadSchema,
|
|
110
|
+
handler: async (query) => ({
|
|
111
|
+
id: "unterlagen",
|
|
112
|
+
titel: "Unterlagen",
|
|
113
|
+
unterlagen: query.payload.id,
|
|
114
|
+
}),
|
|
115
|
+
...open,
|
|
116
|
+
});
|
|
117
|
+
|
|
98
118
|
r.queryHandler({
|
|
99
119
|
name: "lease:akte",
|
|
100
120
|
schema: idPayloadSchema,
|
|
@@ -217,6 +237,28 @@ export const rentalFeature = defineFeature("rental", (r) => {
|
|
|
217
237
|
...open,
|
|
218
238
|
});
|
|
219
239
|
|
|
240
|
+
r.writeHandler({
|
|
241
|
+
name: "invoice:receive",
|
|
242
|
+
schema: receiveInvoicePayloadSchema,
|
|
243
|
+
handler: async (event) => ({ isSuccess: true, data: event.payload }),
|
|
244
|
+
...open,
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
r.writeHandler(
|
|
248
|
+
defineWriteHandler({
|
|
249
|
+
name: "generate-property-expose",
|
|
250
|
+
schema: propertyExposePayloadSchema,
|
|
251
|
+
access: { roles: ["TenantAdmin"] },
|
|
252
|
+
beforeTransaction: async (event, ctx) =>
|
|
253
|
+
renderPdfBeforeTransaction(ctx, {
|
|
254
|
+
slug: "rental:property-expose",
|
|
255
|
+
locale: "de",
|
|
256
|
+
variables: event.payload,
|
|
257
|
+
}),
|
|
258
|
+
handler: async (event, ctx) => storeRenderedPdf(ctx, event.prepared),
|
|
259
|
+
}),
|
|
260
|
+
);
|
|
261
|
+
|
|
220
262
|
r.writeHandler({
|
|
221
263
|
name: "rent:adjust",
|
|
222
264
|
schema: rentAdjustPayloadSchema,
|
|
@@ -270,6 +312,14 @@ export const rentalFeature = defineFeature("rental", (r) => {
|
|
|
270
312
|
r.screen(rentalDashboardScreen);
|
|
271
313
|
r.screen(adjustRentScreen);
|
|
272
314
|
r.screen(recordPositionsScreen);
|
|
315
|
+
r.screen(receiveInvoiceScreen);
|
|
316
|
+
r.screen(leaseUnterlagenScreen);
|
|
317
|
+
r.screen({
|
|
318
|
+
id: "upload-standard-layout",
|
|
319
|
+
type: "custom",
|
|
320
|
+
renderer: { react: { __component: "upload-standard-layout" } },
|
|
321
|
+
description: "Receipt upload on the standard form screen layout.",
|
|
322
|
+
});
|
|
273
323
|
|
|
274
324
|
r.nav({
|
|
275
325
|
id: "contracts",
|
|
@@ -290,4 +340,18 @@ export const rentalFeature = defineFeature("rental", (r) => {
|
|
|
290
340
|
screen: "rental:screen:rental-dashboard",
|
|
291
341
|
order: 20,
|
|
292
342
|
});
|
|
343
|
+
r.nav({
|
|
344
|
+
id: "receive-invoice",
|
|
345
|
+
label: i18nKey("rental.nav.receiveInvoice"),
|
|
346
|
+
parent: "rental:nav:contracts",
|
|
347
|
+
screen: "rental:screen:receive-invoice",
|
|
348
|
+
order: 40,
|
|
349
|
+
});
|
|
350
|
+
r.nav({
|
|
351
|
+
id: "upload-standard-layout",
|
|
352
|
+
label: i18nKey("rental.nav.upload"),
|
|
353
|
+
parent: "rental:nav:contracts",
|
|
354
|
+
screen: "rental:screen:upload-standard-layout",
|
|
355
|
+
order: 30,
|
|
356
|
+
});
|
|
293
357
|
});
|