@wildo-ai/saas-frontend-lib 1.1.5 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/actions/action-bar.d.ts +15 -0
- package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
- package/dist/esm/components/actions/action-bar.js +15 -0
- package/dist/esm/components/actions/action-bar.js.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.d.ts +97 -7
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js +8 -3
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.js +5 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.js.map +1 -1
- package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Main.js +1 -4
- package/dist/esm/components/auth/Auth_Main.js.map +1 -1
- package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Register.js +1 -3
- package/dist/esm/components/auth/Auth_Register.js.map +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.d.ts +7 -0
- package/dist/esm/components/auth/StepUpAuthDialog.d.ts.map +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.js +13 -7
- package/dist/esm/components/auth/StepUpAuthDialog.js.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js +32 -33
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js +18 -20
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js.map +1 -1
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js +2 -3
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js.map +1 -1
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts +13 -16
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts.map +1 -1
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js +18 -15
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.js +2 -2
- package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.js +2 -2
- package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts +33 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.js +34 -5
- package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.js +2 -2
- package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts +2 -0
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.js +1 -0
- package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
- package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayField.js +15 -1
- package/dist/esm/components/data-display/DisplayField.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldArray.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldArray.js +11 -0
- package/dist/esm/components/data-display/DisplayFieldArray.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.js +2 -2
- package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts +12 -2
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.js +3 -2
- package/dist/esm/components/data-display/DisplayFieldEditableArray.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnly.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnly.js +2 -2
- package/dist/esm/components/data-display/DisplayFieldReadOnly.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js +8 -2
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.js +18 -4
- package/dist/esm/components/data-display/DisplayValueDispatcher.js.map +1 -1
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js +61 -3
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts +7 -5
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts +11 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js +36 -11
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
- package/dist/esm/components/data-display/display-field-resolved-props.d.ts +6 -0
- package/dist/esm/components/data-display/display-field-resolved-props.d.ts.map +1 -1
- package/dist/esm/components/data-display/display-field-resolved-props.js.map +1 -1
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts +23 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js +35 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts +47 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js +124 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts +8 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js +46 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js.map +1 -0
- package/dist/esm/components/feedback/resource-empty-state.d.ts +21 -8
- package/dist/esm/components/feedback/resource-empty-state.d.ts.map +1 -1
- package/dist/esm/components/feedback/resource-empty-state.js +56 -26
- package/dist/esm/components/feedback/resource-empty-state.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.d.ts +29 -7
- package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.js +231 -101
- package/dist/esm/components/flows-actors/approval.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.labels.js +57 -0
- package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.js +4 -4
- package/dist/esm/components/flows-actors/system-catalog.js.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.labels.js +0 -5
- package/dist/esm/components/flows-actors/system-catalog.labels.js.map +1 -1
- package/dist/esm/components/form/Form.d.ts +2 -2
- package/dist/esm/components/form/Form.js +2 -2
- package/dist/esm/components/form/Form.js.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts +28 -3
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.js +43 -14
- package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
- package/dist/esm/components/form/automated/FormField.d.ts +3 -0
- package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormField.js +60 -21
- package/dist/esm/components/form/automated/FormField.js.map +1 -1
- package/dist/esm/components/form/automated/FormFieldArray.d.ts +6 -3
- package/dist/esm/components/form/automated/FormFieldArray.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormFieldArray.js +3 -2
- package/dist/esm/components/form/automated/FormFieldArray.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts +5 -4
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js +148 -55
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts +30 -0
- package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.js +30 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.js.map +1 -1
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts +79 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts.map +1 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js +203 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js.map +1 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts +12 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts.map +1 -1
- package/dist/esm/components/form/automated/automated-form-submit.utils.js +11 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.js.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.js +2 -2
- package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
- package/dist/esm/components/form/combobox.d.ts +7 -0
- package/dist/esm/components/form/combobox.d.ts.map +1 -1
- package/dist/esm/components/form/combobox.js.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.js +13 -0
- package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.d.ts +58 -0
- package/dist/esm/components/form/fields/form-field-address.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.js +34 -6
- package/dist/esm/components/form/fields/form-field-address.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.labels.js +60 -1
- package/dist/esm/components/form/fields/form-field-address.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.d.ts +0 -12
- package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.js +34 -13
- package/dist/esm/components/form/fields/form-field-file.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.labels.js +46 -0
- package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts +73 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts.map +1 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.js +64 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.js.map +1 -0
- package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.js +8 -1
- package/dist/esm/components/form/fields/form-field-string.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.labels.js +4 -0
- package/dist/esm/components/form/fields/form-field-string.labels.js.map +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts +31 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts.map +1 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.js +81 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.js.map +1 -0
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts +14 -1
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js +14 -0
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js.map +1 -1
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts +22 -0
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.js +1 -22
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.js.map +1 -1
- package/dist/esm/components/layout/resizable.d.ts +11 -0
- package/dist/esm/components/layout/resizable.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts +11 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js +15 -3
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js +2 -2
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js.map +1 -1
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js +18 -20
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js +7 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js +4 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js +18 -2
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js +82 -10
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js +8 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts +8 -2
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.js +6 -2
- package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js +31 -16
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js +23 -8
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +2 -2
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.d.ts +13 -0
- package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.js +55 -28
- package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.js +41 -20
- package/dist/esm/components/resources/ResourceLayout_List.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.labels.js +1 -2
- package/dist/esm/components/resources/ResourceLayout_List.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts +9 -4
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.js +30 -11
- package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js +4 -2
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js +6 -2
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.js +30 -14
- package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js +14 -198
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Update.d.ts +2 -2
- package/dist/esm/components/resources/ResourceLayout_Update.js +2 -2
- package/dist/esm/components/resources/ResourceLayout_Update.js.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.js +69 -39
- package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
- package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts +32 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts.map +1 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.js +130 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.js.map +1 -0
- package/dist/esm/components/resources/collection-create-placement.utils.d.ts +32 -0
- package/dist/esm/components/resources/collection-create-placement.utils.d.ts.map +1 -0
- package/dist/esm/components/resources/collection-create-placement.utils.js +37 -0
- package/dist/esm/components/resources/collection-create-placement.utils.js.map +1 -0
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.js +5 -1
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.js.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts +8 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js +49 -2
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts +22 -0
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js +85 -2
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
- package/dist/esm/components/resources/resourceLayout.utils.d.ts +14 -0
- package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/resourceLayout.utils.js +22 -0
- package/dist/esm/components/resources/resourceLayout.utils.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayField.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayField.js +3 -0
- package/dist/esm/components/resources/skeleton/ArrayField.js.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js +33 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ObjectScope.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ObjectScope.js +3 -0
- package/dist/esm/components/resources/skeleton/ObjectScope.js.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.d.ts +12 -0
- package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.js +28 -2
- package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts +70 -0
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.js +157 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts +6 -0
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.js +13 -2
- package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.js +2 -1
- package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js +61 -15
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts +24 -2
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js +69 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js +18 -19
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.js +5 -4
- package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
- package/dist/esm/components/sections/stepper.d.ts +5 -0
- package/dist/esm/components/sections/stepper.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.js.map +1 -1
- package/dist/esm/components/sections/surface.d.ts.map +1 -1
- package/dist/esm/components/sections/surface.js +12 -3
- package/dist/esm/components/sections/surface.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts +43 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js +129 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts +3 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js +34 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AppearanceSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.js +9 -11
- package/dist/esm/components/settings/AppPage_AppearanceSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js +3 -2
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.d.ts +4 -2
- package/dist/esm/components/settings/AppPage_BillingSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.js +21 -3
- package/dist/esm/components/settings/AppPage_BillingSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.js +5 -10
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +58 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +243 -40
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +67 -6
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.js +19 -11
- package/dist/esm/components/settings/AppPage_InvitationsSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js +4 -2
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/SettingsHub.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsHub.js +3 -0
- package/dist/esm/components/settings/SettingsHub.js.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js +16 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
- package/dist/esm/components/settings/useOwnerProviderConnections.d.ts +59 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.d.ts.map +1 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.js +136 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.js.map +1 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.d.ts +5 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/chart-view.utils.js +5 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.js.map +1 -1
- package/dist/esm/components/views/chart-view/useResourceChartData.d.ts +50 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.d.ts.map +1 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.js +72 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.js.map +1 -0
- package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.js +2 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts +86 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts.map +1 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.js +187 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.js.map +1 -0
- package/dist/esm/core/app-shell/PortalContainerContext.d.ts +5 -2
- package/dist/esm/core/app-shell/PortalContainerContext.d.ts.map +1 -1
- package/dist/esm/core/app-shell/PortalContainerContext.js +5 -2
- package/dist/esm/core/app-shell/PortalContainerContext.js.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts +18 -9
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.js +1 -0
- package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
- package/dist/esm/core/app-shell/useAppShellLayout.d.ts +10 -0
- package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
- package/dist/esm/core/app-shell/useAppShellLayout.js +28 -5
- package/dist/esm/core/app-shell/useAppShellLayout.js.map +1 -1
- package/dist/esm/core/app-shell/usePublicShellLayout.d.ts.map +1 -1
- package/dist/esm/core/app-shell/usePublicShellLayout.js +38 -0
- package/dist/esm/core/app-shell/usePublicShellLayout.js.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +15 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js +47 -13
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
- package/dist/esm/core/billing/BillingContext.d.ts +25 -2
- package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
- package/dist/esm/core/billing/BillingContext.js +16 -25
- package/dist/esm/core/billing/BillingContext.js.map +1 -1
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts +11 -3
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.js +14 -8
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.js.map +1 -1
- package/dist/esm/core/billing/useBillingPlanChange.d.ts.map +1 -1
- package/dist/esm/core/billing/useBillingPlanChange.js +2 -0
- package/dist/esm/core/billing/useBillingPlanChange.js.map +1 -1
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.d.ts.map +1 -1
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js +1 -0
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js.map +1 -1
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts +29 -229
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js +29 -327
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts +17 -27
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts.map +1 -1
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js +28 -48
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js.map +1 -1
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +21 -11
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/app-configuration-frontend.schemas.js +4 -4
- package/dist/esm/core/config/app-configuration-frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts +17 -0
- package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/app-level-components.frontend.schemas.js +17 -0
- package/dist/esm/core/config/app-level-components.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/chart-view.frontend.schemas.d.ts +10 -10
- package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
- package/dist/esm/core/config/engine-settings-destinations.js +221 -6
- package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +8 -0
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.js +1 -0
- package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +10 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.js +9 -0
- package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/verify-launcher-content.d.ts.map +1 -1
- package/dist/esm/core/config/verify-launcher-content.js +30 -19
- package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
- package/dist/esm/core/errors/ErrorContext.d.ts.map +1 -1
- package/dist/esm/core/errors/ErrorContext.js +9 -1
- package/dist/esm/core/errors/ErrorContext.js.map +1 -1
- package/dist/esm/core/errors/GlobalErrorHandler.d.ts.map +1 -1
- package/dist/esm/core/errors/GlobalErrorHandler.js +5 -4
- package/dist/esm/core/errors/GlobalErrorHandler.js.map +1 -1
- package/dist/esm/core/errors/RouterErrorBoundary.js +1 -1
- package/dist/esm/core/errors/RouterErrorBoundary.js.map +1 -1
- package/dist/esm/core/errors/errors-builder.frontend.services.d.ts +2 -2
- package/dist/esm/core/errors/errors-builder.frontend.services.d.ts.map +1 -1
- package/dist/esm/core/errors/errors-builder.frontend.services.js +4 -4
- package/dist/esm/core/errors/errors-builder.frontend.services.js.map +1 -1
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js +1 -1
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js.map +1 -1
- package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
- package/dist/esm/core/events/NotificationContext.js +23 -5
- package/dist/esm/core/events/NotificationContext.js.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.d.ts +110 -43
- package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.js +89 -15
- package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts +2 -0
- package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.js +2 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js +5 -2
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts +63 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js +131 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts +61 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js +178 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts +52 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.js +144 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts +22 -1
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -1
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js +23 -3
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js.map +1 -1
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts +55 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js +65 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js.map +1 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts +63 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts.map +1 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js +100 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js.map +1 -0
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +45 -7
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.js +112 -28
- package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
- package/dist/esm/core/flows-actors/usePendingDecisions.d.ts +32 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.d.ts.map +1 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.js +91 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.js.map +1 -0
- package/dist/esm/core/guidance/GuidanceRenderer.d.ts.map +1 -1
- package/dist/esm/core/guidance/GuidanceRenderer.js +3 -2
- package/dist/esm/core/guidance/GuidanceRenderer.js.map +1 -1
- package/dist/esm/core/i18n/I18nContext.d.ts +22 -8
- package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
- package/dist/esm/core/i18n/I18nContext.js +21 -9
- package/dist/esm/core/i18n/I18nContext.js.map +1 -1
- package/dist/esm/core/i18n/component-label-resolution.utils.d.ts +5 -3
- package/dist/esm/core/i18n/component-label-resolution.utils.d.ts.map +1 -1
- package/dist/esm/core/i18n/component-label-resolution.utils.js +5 -3
- package/dist/esm/core/i18n/component-label-resolution.utils.js.map +1 -1
- package/dist/esm/core/i18n/useI18n.d.ts +2 -1
- package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
- package/dist/esm/core/i18n/useI18n.js +2 -1
- package/dist/esm/core/i18n/useI18n.js.map +1 -1
- package/dist/esm/core/loading/LoadingContext.d.ts.map +1 -1
- package/dist/esm/core/loading/LoadingContext.js +7 -1
- package/dist/esm/core/loading/LoadingContext.js.map +1 -1
- package/dist/esm/core/loading/LoadingGate.d.ts.map +1 -1
- package/dist/esm/core/loading/LoadingGate.js +19 -1
- package/dist/esm/core/loading/LoadingGate.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts +15 -2
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.js +183 -20
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js +2 -2
- package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts +7 -15
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js +8 -26
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts +12 -3
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js +3 -2
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts +42 -0
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js +89 -5
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts +2 -0
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js +2 -0
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts +78 -0
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.js +264 -16
- package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.d.ts +8 -0
- package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.js +137 -30
- package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.d.ts +2 -0
- package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.js +1 -0
- package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
- package/dist/esm/core/navigation/navigation-cascade.d.ts +46 -0
- package/dist/esm/core/navigation/navigation-cascade.d.ts.map +1 -0
- package/dist/esm/core/navigation/navigation-cascade.js +222 -0
- package/dist/esm/core/navigation/navigation-cascade.js.map +1 -0
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js +21 -2
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js.map +1 -1
- package/dist/esm/core/navigation/navigation-controller-internals.d.ts +71 -0
- package/dist/esm/core/navigation/navigation-controller-internals.d.ts.map +1 -0
- package/dist/esm/core/navigation/navigation-controller-internals.js +84 -0
- package/dist/esm/core/navigation/navigation-controller-internals.js.map +1 -0
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +86 -2
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js +242 -124
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
- package/dist/esm/core/navigation/navigation.schemas.d.ts +170 -8
- package/dist/esm/core/navigation/navigation.schemas.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.schemas.js +121 -2
- package/dist/esm/core/navigation/navigation.schemas.js.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.d.ts +102 -6
- package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.js +283 -34
- package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
- package/dist/esm/core/navigation/useIsStackEntryActive.d.ts +0 -10
- package/dist/esm/core/navigation/useIsStackEntryActive.d.ts.map +0 -1
- package/dist/esm/core/navigation/useIsStackEntryActive.js.map +0 -1
- package/dist/esm/core/navigation/useNavigationController.d.ts +28 -157
- package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
- package/dist/esm/core/navigation/useNavigationController.js +211 -1189
- package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
- package/dist/esm/core/navigation/useNavigationRouterSync.d.ts +174 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.d.ts.map +1 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.js +977 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.js.map +1 -0
- package/dist/esm/core/navigation/useOverlayTitle.d.ts +13 -1
- package/dist/esm/core/navigation/useOverlayTitle.d.ts.map +1 -1
- package/dist/esm/core/navigation/useOverlayTitle.js +15 -10
- package/dist/esm/core/navigation/useOverlayTitle.js.map +1 -1
- package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts +43 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts.map +1 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.js +44 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.js.map +1 -0
- package/dist/esm/core/navigation/zone-collapse-migration.d.ts +83 -0
- package/dist/esm/core/navigation/zone-collapse-migration.d.ts.map +1 -0
- package/dist/esm/core/navigation/zone-collapse-migration.js +116 -0
- package/dist/esm/core/navigation/zone-collapse-migration.js.map +1 -0
- package/dist/esm/core/navigation/zone-collapse.d.ts +51 -0
- package/dist/esm/core/navigation/zone-collapse.d.ts.map +1 -0
- package/dist/esm/core/navigation/zone-collapse.js +59 -0
- package/dist/esm/core/navigation/zone-collapse.js.map +1 -0
- package/dist/esm/core/navigation/zone-emphasis.d.ts +3 -0
- package/dist/esm/core/navigation/zone-emphasis.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-emphasis.js +26 -4
- package/dist/esm/core/navigation/zone-emphasis.js.map +1 -1
- package/dist/esm/core/navigation/zone-visible-entry.d.ts +22 -0
- package/dist/esm/core/navigation/zone-visible-entry.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-visible-entry.js +25 -0
- package/dist/esm/core/navigation/zone-visible-entry.js.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketContext.js +53 -18
- package/dist/esm/core/requests/websockets/WebSocketContext.js.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.js +3 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.js.map +1 -1
- package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts +22 -0
- package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/useNotificationBadges.js +72 -3
- package/dist/esm/core/requests/websockets/useNotificationBadges.js.map +1 -1
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts +28 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts.map +1 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js +86 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js.map +1 -0
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +38 -3
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js +57 -2
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js +4 -2
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +30 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js +47 -4
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/ResourceRegistryContext.d.ts.map +1 -1
- package/dist/esm/core/resources/ResourceRegistryContext.js +22 -1
- package/dist/esm/core/resources/ResourceRegistryContext.js.map +1 -1
- package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js +1 -1
- package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.d.ts +22 -1
- package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.js +25 -2
- package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts +113 -13
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js +173 -20
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts +11 -0
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js +7 -0
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts +3 -2
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js +13 -5
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts +6 -0
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.js +90 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts +139 -16
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.js +110 -11
- package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js +3 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts +10 -0
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js +8 -0
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts +7 -0
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.js +9 -2
- package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
- package/dist/esm/core/resources/useOperationDirectExecution.d.ts +59 -0
- package/dist/esm/core/resources/useOperationDirectExecution.d.ts.map +1 -0
- package/dist/esm/core/resources/useOperationDirectExecution.js +278 -0
- package/dist/esm/core/resources/useOperationDirectExecution.js.map +1 -0
- package/dist/esm/core/resources/useResourceOperationActions.d.ts +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.js +69 -22
- package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts +8 -6
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.js +3 -2
- package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
- package/dist/esm/core/runtime/AppRouter.js +23 -2
- package/dist/esm/core/runtime/AppRouter.js.map +1 -1
- package/dist/esm/core/runtime/ApplicationContext.shared.d.ts +4 -2
- package/dist/esm/core/runtime/ApplicationContext.shared.d.ts.map +1 -1
- package/dist/esm/core/runtime/ApplicationContext.shared.js.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.d.ts +12 -2
- package/dist/esm/core/runtime/ApplicationMainContext.d.ts.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.js +5 -2
- package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts +25 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts.map +1 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.js +37 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.js.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts +21 -2
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.js +51 -4
- package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
- package/dist/esm/core/security/AuthSessionContext.d.ts +11 -0
- package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
- package/dist/esm/core/security/AuthSessionContext.js +70 -22
- package/dist/esm/core/security/AuthSessionContext.js.map +1 -1
- package/dist/esm/core/security/StepUpAuthContext.d.ts.map +1 -1
- package/dist/esm/core/security/StepUpAuthContext.js +10 -2
- package/dist/esm/core/security/StepUpAuthContext.js.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.js +72 -8
- package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
- package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts +7 -0
- package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/security/route-organization-access.frontend.utils.js +8 -2
- package/dist/esm/core/security/route-organization-access.frontend.utils.js.map +1 -1
- package/dist/esm/core/security/useGrantedConsentPurposes.d.ts +30 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.d.ts.map +1 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.js +38 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.js.map +1 -0
- package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
- package/dist/esm/core/ui/UIContext.js +10 -6
- package/dist/esm/core/ui/UIContext.js.map +1 -1
- package/dist/esm/core/ui/color-conversion.utils.d.ts +20 -0
- package/dist/esm/core/ui/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/core/ui/color-conversion.utils.js +39 -5
- package/dist/esm/core/ui/color-conversion.utils.js.map +1 -1
- package/dist/esm/core/ui/themes/default.theme.d.ts.map +1 -1
- package/dist/esm/core/ui/themes/default.theme.js +22 -2
- package/dist/esm/core/ui/themes/default.theme.js.map +1 -1
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts +6 -6
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/ui/ui.frontend.schemas.js +3 -3
- package/dist/esm/core/ui/ui.frontend.schemas.js.map +1 -1
- package/dist/esm/index.d.ts +10 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +19 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/testing/app-shell-placement-coverage.d.ts +43 -0
- package/dist/esm/testing/app-shell-placement-coverage.d.ts.map +1 -0
- package/dist/esm/testing/app-shell-placement-coverage.js +114 -0
- package/dist/esm/testing/app-shell-placement-coverage.js.map +1 -0
- package/dist/esm/testing/mock-builders.d.ts.map +1 -1
- package/dist/esm/testing/mock-builders.js +5 -0
- package/dist/esm/testing/mock-builders.js.map +1 -1
- package/dist/esm/testing.d.ts +1 -0
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/testing.js +1 -0
- package/dist/esm/testing.js.map +1 -1
- package/package.json +9 -7
- package/dist/esm/core/navigation/useIsStackEntryActive.js +0 -15
- package/dist/tsconfig.build.tsbuildinfo +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeLayout.js","sourceRoot":"","sources":["../../../../../../src/components/views/composite-view/CompositeLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport type { IndicatorVariant } from '@wildo-ai/presets-components-models';\nimport React, { useMemo, type ReactNode } from 'react';\nimport type { ExpandTrigger, SectionConfig } from '@wildo-ai/presets-components-models';\nimport { LabellingTypes } from '@wildo-ai/presets-components-models';\n\nimport {\n ContentSectionContainer,\n type ContentSectionDescriptor,\n} from '~wildo-frontend-lib/components/sections/ContentSectionContainer';\n\nimport {\n buildSectionConfigFromGroup,\n groupSectionsByAppearance,\n type SectionGroup,\n} from '~wildo-frontend-lib/components/resources/skeleton/section-consolidation.utils';\nimport { GroupedSectionBody, type SectionProps } from '~wildo-frontend-lib/components/resources/skeleton/Section';\nimport { GroupedSectionHostKind } from '~wildo-frontend-lib/components/resources/skeleton/Section.shared';\nimport {\n SectionPresentationProvider,\n type SectionPresentationEntry,\n} from '~wildo-frontend-lib/components/resources/skeleton/SectionPresentationContext';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { useOptionalCompositeViewContext } from './CompositeViewContext';\n\nexport interface CompositeLayoutProps {\n className?: string;\n children?: ReactNode;\n containerConfig?: CompositeLayoutContainerConfigOverrides;\n sectionMetadata?: Record<string, {\n icon?: React.ReactNode;\n /** How many things wait in the section, shown on its tab (#1325). */\n count?: number;\n countTone?: IndicatorVariant;\n containerConfig?: CompositeLayoutContainerConfigOverrides;\n }>;\n /**\n * Forwarded to every section-group container (creation-board plan, Phase 4). Pairs with the\n * `activeSection` override to complete the CONTROLLED contract: an owner that passes\n * `activeSection` receives every change request here and applies it (typically to the URL);\n * ignoring the callback while controlling the value freezes the tabs.\n */\n onSectionChange?: (sectionId: string | string[]) => void;\n}\n\nexport interface CompositeLayoutContainerConfigOverrides {\n animated?: boolean;\n persistState?: boolean;\n storageKey?: string;\n hideWhenEmpty?: boolean;\n showSingleSectionNav?: boolean;\n fallbackMode?: SectionConfig['mode'];\n emptyStateMessage?: string;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n triggerLabel?: { open: string; closed: string };\n allowNone?: boolean;\n expandTrigger?: ExpandTrigger;\n showMoreLabel?: string;\n showLessLabel?: string;\n completedIcon?: React.ReactNode;\n nextLabel?: string;\n previousLabel?: string;\n completeLabel?: string;\n /**\n * CONTROLLED active section for the navigation modes (TABS / VERTICAL_TABS / PILLS) — see the\n * seam's contract on the section configs (`frontend-forms.shared.schemas.ts`). Rides the same\n * override merge every other container knob uses, so a composite OWNER can drive the active tab\n * (deep links, cross-pane navigation) without a bespoke channel.\n */\n activeSection?: string;\n}\n\nexport function CompositeLayout({\n className,\n children,\n containerConfig,\n sectionMetadata,\n onSectionChange,\n}: CompositeLayoutProps): ReactNode {\n const compositeViewContext = useOptionalCompositeViewContext();\n const compositeTranslationRef = compositeViewContext?.viewDefinition.translationRef;\n const compositeLabelKeys = useMemo(\n () => (\n compositeTranslationRef\n ? [`${LabellingTypes.COMPOSITE_VIEWS}.${compositeTranslationRef}`]\n : []\n ),\n [compositeTranslationRef],\n );\n const { tCompositeViewSection } = useI18n({ keys: compositeLabelKeys });\n const sectionPresentation = useMemo<Record<string, SectionPresentationEntry> | undefined>(() => {\n const sectionRefs = new Set<string>([\n ...Object.keys(sectionMetadata ?? {}),\n ...(compositeViewContext?.viewDefinition.sectionRefs ?? []),\n ]);\n if (sectionRefs.size === 0) {\n return undefined;\n }\n\n /*\n * Words are resolved only for DECLARED section refs. The labelling pipeline plans\n * `composite_views.<ref>.sections.<section>.*` from `viewDefinition.sectionRefs` and from nothing\n * else, so a name that reaches this map through `sectionMetadata` alone has no label anyone could\n * generate — and since #1450 a missing title is its key path, it would show one forever. Such a\n * section keeps its icon and count and stays untitled, as it always was.\n */\n const declaredSectionRefs = new Set<string>(compositeViewContext?.viewDefinition.sectionRefs ?? []);\n return Object.fromEntries(\n Array.from(sectionRefs).map((sectionName) => [\n sectionName,\n {\n title: compositeTranslationRef && declaredSectionRefs.has(sectionName)\n ? tCompositeViewSection(compositeTranslationRef, sectionName, 'title')\n : undefined,\n description: compositeTranslationRef && declaredSectionRefs.has(sectionName)\n ? tCompositeViewSection(compositeTranslationRef, sectionName, 'description')\n : undefined,\n icon: sectionMetadata?.[sectionName]?.icon,\n count: sectionMetadata?.[sectionName]?.count,\n countTone: sectionMetadata?.[sectionName]?.countTone,\n },\n ]),\n );\n }, [\n compositeTranslationRef,\n compositeViewContext?.viewDefinition.sectionRefs,\n sectionMetadata,\n tCompositeViewSection,\n ]);\n const renderedChildren = useMemo(\n () => renderGroupedChildren(children, containerConfig, sectionPresentation, sectionMetadata, onSectionChange),\n [children, containerConfig, sectionPresentation, sectionMetadata, onSectionChange],\n );\n\n return (\n <SectionPresentationProvider value={{ sectionEntries: sectionPresentation }}>\n <div className={className} data-composite-layout>\n {renderedChildren}\n </div>\n </SectionPresentationProvider>\n );\n}\n\nfunction renderGroupedChildren(\n children: ReactNode,\n containerConfig?: CompositeLayoutProps['containerConfig'],\n sectionPresentation?: Record<string, SectionPresentationEntry>,\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n onSectionChange?: CompositeLayoutProps['onSectionChange'],\n): ReactNode {\n const grouped = groupSectionsByAppearance(children);\n\n return (\n <>\n {grouped.items.map((item, idx) => {\n if (item.type === 'node') {\n return <React.Fragment key={idx}>{item.node}</React.Fragment>;\n }\n\n const { group } = item;\n const groupedSections = splitCompositeSectionGroupByMetadata(group.sections, sectionMetadata);\n\n return groupedSections.map((sectionGroup, groupIndex) => {\n const config = mergeCompositeLayoutContainerConfig(\n buildSectionConfigFromGroup({\n ...group,\n sections: sectionGroup,\n } as SectionGroup),\n resolveCompositeLayoutContainerConfig(sectionGroup, containerConfig, sectionMetadata),\n );\n\n const sections: ContentSectionDescriptor[] = sectionGroup.map((section) => (\n buildContentSectionFromLayoutSection(section, sectionPresentation)\n ));\n\n return (\n <ContentSectionContainer\n key={`composite-group-${group.mode}-${idx}-${groupIndex}`}\n sections={sections}\n config={config}\n onSectionChange={onSectionChange}\n />\n );\n });\n })}\n </>\n );\n}\n\nfunction buildContentSectionFromLayoutSection(\n section: React.ReactElement<SectionProps>,\n sectionPresentation?: Record<string, SectionPresentationEntry>,\n): ContentSectionDescriptor {\n const metadata = sectionPresentation?.[section.props.name];\n\n return {\n id: section.props.name,\n title: metadata?.title,\n description: metadata?.description,\n icon: metadata?.icon,\n count: metadata?.count,\n countTone: metadata?.countTone,\n disabled: section.props.disabled,\n content: (\n <GroupedSectionBody\n hostKind={GroupedSectionHostKind.COMPOSITE}\n sectionProps={section.props}\n providesHeading={!!metadata?.title}\n />\n ),\n };\n}\n\nfunction resolveCompositeLayoutContainerConfig(\n sections: React.ReactElement<SectionProps>[],\n containerConfig?: CompositeLayoutProps['containerConfig'],\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n): CompositeLayoutContainerConfigOverrides | undefined {\n const anchoredOverrides = sections\n .map((section) => sectionMetadata?.[section.props.name]?.containerConfig)\n .find((value) => value !== undefined);\n\n if (!containerConfig && !anchoredOverrides) {\n return undefined;\n }\n\n return {\n ...containerConfig,\n ...anchoredOverrides,\n };\n}\n\nfunction mergeCompositeLayoutContainerConfig(\n config: SectionConfig,\n overrides?: CompositeLayoutContainerConfigOverrides,\n): SectionConfig {\n if (!overrides) {\n return config;\n }\n\n return {\n ...config,\n ...overrides,\n } as SectionConfig;\n}\n\nfunction splitCompositeSectionGroupByMetadata(\n sections: React.ReactElement<SectionProps>[],\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n): React.ReactElement<SectionProps>[][] {\n const groups: React.ReactElement<SectionProps>[][] = [];\n\n for (const section of sections) {\n const metadataOverrideKey = JSON.stringify(\n sectionMetadata?.[section.props.name]?.containerConfig ?? null,\n );\n const previousGroup = groups[groups.length - 1];\n if (!previousGroup) {\n groups.push([section]);\n continue;\n }\n\n const previousSection = previousGroup[previousGroup.length - 1];\n const previousOverrideKey = JSON.stringify(\n sectionMetadata?.[previousSection.props.name]?.containerConfig ?? null,\n );\n\n if (previousOverrideKey === metadataOverrideKey) {\n previousGroup.push(section);\n continue;\n }\n\n groups.push([section]);\n }\n\n return groups;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CompositeLayout.js","sourceRoot":"","sources":["../../../../../../src/components/views/composite-view/CompositeLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport type { IndicatorVariant } from '@wildo-ai/presets-components-models';\nimport React, { useMemo, type ReactNode } from 'react';\nimport type { ExpandTrigger, SectionConfig } from '@wildo-ai/presets-components-models';\nimport { LabellingTypes } from '@wildo-ai/presets-components-models';\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\n\nimport {\n ContentSectionContainer,\n type ContentSectionDescriptor,\n} from '~wildo-frontend-lib/components/sections/ContentSectionContainer';\n\nimport {\n buildSectionConfigFromGroup,\n groupSectionsByAppearance,\n type SectionGroup,\n} from '~wildo-frontend-lib/components/resources/skeleton/section-consolidation.utils';\nimport { GroupedSectionBody, type SectionProps } from '~wildo-frontend-lib/components/resources/skeleton/Section';\nimport { GroupedSectionHostKind } from '~wildo-frontend-lib/components/resources/skeleton/Section.shared';\nimport {\n SectionPresentationProvider,\n type SectionPresentationEntry,\n} from '~wildo-frontend-lib/components/resources/skeleton/SectionPresentationContext';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { useOptionalCompositeViewContext } from './CompositeViewContext';\n\nexport interface CompositeLayoutProps {\n className?: string;\n children?: ReactNode;\n containerConfig?: CompositeLayoutContainerConfigOverrides;\n sectionMetadata?: Record<string, {\n icon?: React.ReactNode;\n /** How many things wait in the section, shown on its tab (#1325). */\n count?: number;\n countTone?: IndicatorVariant;\n containerConfig?: CompositeLayoutContainerConfigOverrides;\n }>;\n /**\n * Forwarded to every section-group container (creation-board plan, Phase 4). Pairs with the\n * `activeSection` override to complete the CONTROLLED contract: an owner that passes\n * `activeSection` receives every change request here and applies it (typically to the URL);\n * ignoring the callback while controlling the value freezes the tabs.\n */\n onSectionChange?: (sectionId: string | string[]) => void;\n}\n\nexport interface CompositeLayoutContainerConfigOverrides {\n animated?: boolean;\n persistState?: boolean;\n storageKey?: string;\n hideWhenEmpty?: boolean;\n showSingleSectionNav?: boolean;\n fallbackMode?: SectionConfig['mode'];\n emptyStateMessage?: string;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n triggerLabel?: { open: string; closed: string };\n allowNone?: boolean;\n expandTrigger?: ExpandTrigger;\n showMoreLabel?: string;\n showLessLabel?: string;\n completedIcon?: React.ReactNode;\n nextLabel?: string;\n previousLabel?: string;\n completeLabel?: string;\n /**\n * CONTROLLED active section for the navigation modes (TABS / VERTICAL_TABS / PILLS) — see the\n * seam's contract on the section configs (`frontend-forms.shared.schemas.ts`). Rides the same\n * override merge every other container knob uses, so a composite OWNER can drive the active tab\n * (deep links, cross-pane navigation) without a bespoke channel.\n */\n activeSection?: string;\n}\n\nexport function CompositeLayout({\n className,\n children,\n containerConfig,\n sectionMetadata,\n onSectionChange,\n}: CompositeLayoutProps): ReactNode {\n const compositeViewContext = useOptionalCompositeViewContext();\n const compositeTranslationRef = compositeViewContext?.viewDefinition.translationRef;\n const compositeLabelKeys = useMemo(\n () => (\n compositeTranslationRef\n ? [`${LabellingTypes.COMPOSITE_VIEWS}.${compositeTranslationRef}`]\n : []\n ),\n [compositeTranslationRef],\n );\n const { tCompositeViewSection } = useI18n({ keys: compositeLabelKeys });\n const sectionPresentation = useMemo<Record<string, SectionPresentationEntry> | undefined>(() => {\n const sectionRefs = new Set<string>([\n ...Object.keys(sectionMetadata ?? {}),\n ...(compositeViewContext?.viewDefinition.sectionRefs ?? []),\n ]);\n if (sectionRefs.size === 0) {\n return undefined;\n }\n\n /*\n * Words are resolved only for DECLARED section refs. The labelling pipeline plans\n * `composite_views.<ref>.sections.<section>.*` from `viewDefinition.sectionRefs` and from nothing\n * else, so a name that reaches this map through `sectionMetadata` alone has no label anyone could\n * generate — and since #1450 a missing title is its key path, it would show one forever. Such a\n * section keeps its icon and count and stays untitled, as it always was.\n */\n const declaredSectionRefs = new Set<string>(compositeViewContext?.viewDefinition.sectionRefs ?? []);\n return Object.fromEntries(\n Array.from(sectionRefs).map((sectionName) => [\n sectionName,\n {\n title: compositeTranslationRef && declaredSectionRefs.has(sectionName)\n ? tCompositeViewSection(compositeTranslationRef, sectionName, 'title')\n : undefined,\n description: compositeTranslationRef && declaredSectionRefs.has(sectionName)\n ? tCompositeViewSection(compositeTranslationRef, sectionName, 'description')\n : undefined,\n icon: sectionMetadata?.[sectionName]?.icon,\n count: sectionMetadata?.[sectionName]?.count,\n countTone: sectionMetadata?.[sectionName]?.countTone,\n },\n ]),\n );\n }, [\n compositeTranslationRef,\n compositeViewContext?.viewDefinition.sectionRefs,\n sectionMetadata,\n tCompositeViewSection,\n ]);\n const renderedChildren = useMemo(\n () => renderGroupedChildren(children, containerConfig, sectionPresentation, sectionMetadata, onSectionChange),\n [children, containerConfig, sectionPresentation, sectionMetadata, onSectionChange],\n );\n\n return (\n <SectionPresentationProvider value={{ sectionEntries: sectionPresentation }}>\n {/*\n Sections stack with the SAME rhythm `DisplayLayout` and `FormLayout` give theirs. This root had no\n spacing at all, so every composite's sections touched: measured on Wonder Todos, a todo's\n \"Supporting Tasks\" list ran straight into the \"Progress Metrics\" heading below it. A flex column\n with `gap` rather than `space-y`, because a section's content is often behind a `LoadingGate`,\n whose ready wrapper is `display: contents` — a flex gap spaces its children, a margin cannot.\n */}\n <div className={cn('flex flex-col gap-section', className)} data-composite-layout>\n {renderedChildren}\n </div>\n </SectionPresentationProvider>\n );\n}\n\nfunction renderGroupedChildren(\n children: ReactNode,\n containerConfig?: CompositeLayoutProps['containerConfig'],\n sectionPresentation?: Record<string, SectionPresentationEntry>,\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n onSectionChange?: CompositeLayoutProps['onSectionChange'],\n): ReactNode {\n const grouped = groupSectionsByAppearance(children);\n\n return (\n <>\n {grouped.items.map((item, idx) => {\n if (item.type === 'node') {\n return <React.Fragment key={idx}>{item.node}</React.Fragment>;\n }\n\n const { group } = item;\n const groupedSections = splitCompositeSectionGroupByMetadata(group.sections, sectionMetadata);\n\n return groupedSections.map((sectionGroup, groupIndex) => {\n const config = mergeCompositeLayoutContainerConfig(\n buildSectionConfigFromGroup({\n ...group,\n sections: sectionGroup,\n } as SectionGroup),\n resolveCompositeLayoutContainerConfig(sectionGroup, containerConfig, sectionMetadata),\n );\n\n const sections: ContentSectionDescriptor[] = sectionGroup.map((section) => (\n buildContentSectionFromLayoutSection(section, sectionPresentation)\n ));\n\n return (\n <ContentSectionContainer\n key={`composite-group-${group.mode}-${idx}-${groupIndex}`}\n sections={sections}\n config={config}\n onSectionChange={onSectionChange}\n />\n );\n });\n })}\n </>\n );\n}\n\nfunction buildContentSectionFromLayoutSection(\n section: React.ReactElement<SectionProps>,\n sectionPresentation?: Record<string, SectionPresentationEntry>,\n): ContentSectionDescriptor {\n const metadata = sectionPresentation?.[section.props.name];\n\n return {\n id: section.props.name,\n title: metadata?.title,\n description: metadata?.description,\n icon: metadata?.icon,\n count: metadata?.count,\n countTone: metadata?.countTone,\n disabled: section.props.disabled,\n content: (\n <GroupedSectionBody\n hostKind={GroupedSectionHostKind.COMPOSITE}\n sectionProps={section.props}\n providesHeading={!!metadata?.title}\n />\n ),\n };\n}\n\nfunction resolveCompositeLayoutContainerConfig(\n sections: React.ReactElement<SectionProps>[],\n containerConfig?: CompositeLayoutProps['containerConfig'],\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n): CompositeLayoutContainerConfigOverrides | undefined {\n const anchoredOverrides = sections\n .map((section) => sectionMetadata?.[section.props.name]?.containerConfig)\n .find((value) => value !== undefined);\n\n if (!containerConfig && !anchoredOverrides) {\n return undefined;\n }\n\n return {\n ...containerConfig,\n ...anchoredOverrides,\n };\n}\n\nfunction mergeCompositeLayoutContainerConfig(\n config: SectionConfig,\n overrides?: CompositeLayoutContainerConfigOverrides,\n): SectionConfig {\n if (!overrides) {\n return config;\n }\n\n return {\n ...config,\n ...overrides,\n } as SectionConfig;\n}\n\nfunction splitCompositeSectionGroupByMetadata(\n sections: React.ReactElement<SectionProps>[],\n sectionMetadata?: CompositeLayoutProps['sectionMetadata'],\n): React.ReactElement<SectionProps>[][] {\n const groups: React.ReactElement<SectionProps>[][] = [];\n\n for (const section of sections) {\n const metadataOverrideKey = JSON.stringify(\n sectionMetadata?.[section.props.name]?.containerConfig ?? null,\n );\n const previousGroup = groups[groups.length - 1];\n if (!previousGroup) {\n groups.push([section]);\n continue;\n }\n\n const previousSection = previousGroup[previousGroup.length - 1];\n const previousOverrideKey = JSON.stringify(\n sectionMetadata?.[previousSection.props.name]?.containerConfig ?? null,\n );\n\n if (previousOverrideKey === metadataOverrideKey) {\n previousGroup.push(section);\n continue;\n }\n\n groups.push([section]);\n }\n\n return groups;\n}\n"]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { HorizontalPlacement, ShellRegion } from '@wildo-ai/presets-components-models';
|
|
3
|
+
import type { StatusBarPlacement } from '../../core/config/app-level-components.frontend.schemas';
|
|
4
|
+
import type { AppShellLayoutInfo } from './app-shell.schemas';
|
|
5
|
+
/**
|
|
6
|
+
* Latches the FIRST time the shell becomes ready.
|
|
7
|
+
*
|
|
8
|
+
* `isLayoutReady` derives from configuration presence and can drop transiently after bootstrap (an
|
|
9
|
+
* organization switch reloading config, for example). Replacing the mounted shell with a loading state on such
|
|
10
|
+
* a drop would unmount every provider and zone below it and destroy navigation state — the failure mode
|
|
11
|
+
* `AppLoadingGate` documents. So a layout shows its loading state only while this returns `false`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useAppShellFirstReady(isLayoutReady: boolean): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* The shell's loading state: a centred spinner on the page background, announced politely. What every layout
|
|
16
|
+
* shows while `useAppShellFirstReady` says the shell has never been ready — one component rather than a copy per
|
|
17
|
+
* layout, so the loading state is the same whatever the disposal.
|
|
18
|
+
*/
|
|
19
|
+
export declare function AppShellLoadingState(): React.JSX.Element;
|
|
20
|
+
export interface AppShellProvidersProps {
|
|
21
|
+
/** The result of `useAppShellLayout()`, computed once by the layout and shared with every outlet. */
|
|
22
|
+
layout: AppShellLayoutInfo;
|
|
23
|
+
children: React.ReactNode;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The providers every shell region reads, and nothing else — they render no DOM of their own:
|
|
27
|
+
*
|
|
28
|
+
* - `PortalContainerContext`, holding the `<main>` element `AppShellContentOutlet` registers, so overlays opened
|
|
29
|
+
* from any region portal into the content area — or, when the layout renders `AppShellOverlayPortalLayer`, that
|
|
30
|
+
* layer instead;
|
|
31
|
+
* - `HostedComponentInteractionsProvider`, the single owner of the open state and the open hotkey of the
|
|
32
|
+
* interactive hosted components (command menu, notification center, quick switcher), which may be hosted in the
|
|
33
|
+
* menubar and the sidebar at once.
|
|
34
|
+
*/
|
|
35
|
+
export declare function AppShellProviders({ layout, children }: AppShellProvidersProps): React.JSX.Element;
|
|
36
|
+
/**
|
|
37
|
+
* A dedicated layer every overlay (dialog, sheet, menu, popover, tooltip) portals into, for a layout whose regions
|
|
38
|
+
* are TRANSFORMED — a 3D placement. Render it once, inside the providers but OUTSIDE the transformed subtree; the
|
|
39
|
+
* providers then prefer it to `<main>`. A layout that transforms nothing does not need it.
|
|
40
|
+
*
|
|
41
|
+
* It is a zero-size, untransformed, fixed box at the viewport's origin: an overlay positioned `fixed` resolves
|
|
42
|
+
* against the viewport, one positioned `absolute` against the viewport's origin, so floating content lands where its
|
|
43
|
+
* trigger is on screen. It carries the stacking tier overlays need above a layout's own layers.
|
|
44
|
+
*/
|
|
45
|
+
export declare function AppShellOverlayPortalLayer(): React.JSX.Element;
|
|
46
|
+
/**
|
|
47
|
+
* Which region to render, and — for a region that sits at an edge — at which edge. The content area is not
|
|
48
|
+
* among them: it has its own outlet, because it owns `<main>` and the page.
|
|
49
|
+
*
|
|
50
|
+
* `placement` renders the region only when the application configured THAT placement. A layout that places the
|
|
51
|
+
* same region at two positions — as the default layout does for the sidebar's start and end edges — renders one
|
|
52
|
+
* outlet per edge. Omitted, the region renders at whatever placement is configured. The type admits only the
|
|
53
|
+
* placement axis the region has, so a sidebar cannot be asked for a vertical edge and render nothing.
|
|
54
|
+
*/
|
|
55
|
+
export type AppShellRegionOutletProps = {
|
|
56
|
+
region: ShellRegion.SIDEBAR | ShellRegion.UTILITY_PANEL;
|
|
57
|
+
placement?: HorizontalPlacement.START | HorizontalPlacement.END;
|
|
58
|
+
} | {
|
|
59
|
+
region: ShellRegion.STATUS_BAR;
|
|
60
|
+
placement?: StatusBarPlacement;
|
|
61
|
+
} | {
|
|
62
|
+
region: ShellRegion.ACTIVITY_BAR | ShellRegion.MENUBAR | ShellRegion.TOOLBAR;
|
|
63
|
+
placement?: never;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Renders one shell region's component — the registry-resolved wrapper, with its placement prop — when the
|
|
67
|
+
* application configures that region (and, if `placement` is given, at that placement). Renders nothing
|
|
68
|
+
* otherwise, so placing an outlet for every region is always safe.
|
|
69
|
+
*/
|
|
70
|
+
export declare function AppShellRegionOutlet(props: AppShellRegionOutletProps): React.JSX.Element | null;
|
|
71
|
+
export interface AppShellContentOutletProps {
|
|
72
|
+
/** Classes for the `<main>` element — the layout decides how the content area sizes within its arrangement. */
|
|
73
|
+
className?: string;
|
|
74
|
+
/** The route outlet the layout container receives; rendered by the navigation zones while their stack is empty. */
|
|
75
|
+
children?: React.ReactNode;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The content area: the `<main>` landmark carrying `ShellRegion.CONTENT`, the navigation zones, and the floating
|
|
79
|
+
* quick-action button when configured. Its element is registered with `AppShellProviders` as the portal
|
|
80
|
+
* container, so it must be rendered exactly once, inside the providers.
|
|
81
|
+
*/
|
|
82
|
+
export declare function AppShellContentOutlet({ className, children }: AppShellContentOutletProps): React.JSX.Element;
|
|
83
|
+
/** The shell's overlay layer: navigation dialogs and sheets, then guidance (tours, tooltips, highlights). */
|
|
84
|
+
export declare function AppShellOverlaysOutlet(): React.JSX.Element;
|
|
85
|
+
/** @wildo_source:part:end saas.frontend.app-shell.building-blocks */
|
|
86
|
+
//# sourceMappingURL=AppShellBuildingBlocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppShellBuildingBlocks.d.ts","sourceRoot":"","sources":["../../../../../src/core/app-shell/AppShellBuildingBlocks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAE3F,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAqC,MAAM,qCAAqC,CAAC;AAe1H,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uEAAuE,CAAC;AAEhH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAoE9D;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAMrE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAUxD;AAED,MAAM,WAAW,sBAAsB;IACrC,qGAAqG;IACrG,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqBjG;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAM9D;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GACjC;IAAE,MAAM,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC;IAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAA;CAAE,GAC5H;IAAE,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC;IAAC,SAAS,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAClE;IAAE,MAAM,EAAE,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAExG;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA8B/F;AAED,MAAM,WAAW,0BAA0B;IACzC,+GAA+G;IAC/G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mHAAmH;IACnH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,0BAA0B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW5G;AAED,6GAA6G;AAC7G,wBAAgB,sBAAsB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAO1D;AACD,qEAAqE"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useState } from 'react';
|
|
3
|
+
import { ShellRegion, SurfaceVariant } from '@wildo-ai/presets-components-models';
|
|
4
|
+
import { LoadingSpinner } from '../../components/feedback/loading-spinner.js';
|
|
5
|
+
import { Surface } from '../../components/sections/surface.js';
|
|
6
|
+
import { NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE } from '../../core/ui/surface-a11y.utils.js';
|
|
7
|
+
import { ApplicationLevel_ActivityBar } from '../../components/navigation/app-level/ApplicationLevel_ActivityBar.js';
|
|
8
|
+
import { ApplicationLevel_MenuBar } from '../../components/navigation/app-level/ApplicationLevel_MenuBar.js';
|
|
9
|
+
import { ApplicationLevel_QuickActionButton } from '../../components/navigation/app-level/ApplicationLevel_QuickActionButton.js';
|
|
10
|
+
import { ApplicationLevel_Sidebar } from '../../components/navigation/app-level/ApplicationLevel_Sidebar.js';
|
|
11
|
+
import { ApplicationLevel_StatusBar } from '../../components/navigation/app-level/ApplicationLevel_StatusBar.js';
|
|
12
|
+
import { ApplicationLevel_Toolbar } from '../../components/navigation/app-level/ApplicationLevel_Toolbar.js';
|
|
13
|
+
import { ApplicationLevel_UtilityPanel } from '../../components/navigation/app-level/ApplicationLevel_UtilityPanel.js';
|
|
14
|
+
import { HostedComponentInteractionsProvider } from '../../components/navigation/app-level/HostedComponentInteractionsProvider.js';
|
|
15
|
+
import { GuidanceRenderer } from '../../core/guidance/GuidanceRenderer.js';
|
|
16
|
+
import { NavigationContentAreas, NavigationOverlays } from '../../core/navigation/NavigationContentAreas.js';
|
|
17
|
+
import { PortalContainerContext } from './PortalContainerContext.js';
|
|
18
|
+
/** @wildo_source:part:start saas.frontend.app-shell.building-blocks facet:layer:frontend facet:family:app-shell facet:audience:app-developer */
|
|
19
|
+
/**
|
|
20
|
+
* # App shell building blocks
|
|
21
|
+
*
|
|
22
|
+
* The signed-in shell is a LAYOUT — where the regions sit — over parts that do not depend on the layout: the
|
|
23
|
+
* region components themselves (each resolved from the component registry by its wrapper), the content area,
|
|
24
|
+
* the overlays, and two providers every region reads. These building blocks are those parts, so a layout
|
|
25
|
+
* preset only decides the ARRANGEMENT. `AppLayoutPreset_MainContainer_Default` is composed from them, and any
|
|
26
|
+
* other layout container an application registers should be too — a different arrangement of the same regions,
|
|
27
|
+
* or, later, an alternative rendering that draws decoration around them.
|
|
28
|
+
*
|
|
29
|
+
* A layout preset uses them like this:
|
|
30
|
+
*
|
|
31
|
+
* ```tsx
|
|
32
|
+
* const layout = useAppShellLayout();
|
|
33
|
+
* const hasBeenReady = useAppShellFirstReady(layout.isLayoutReady);
|
|
34
|
+
* if (!layout.isLayoutReady && !hasBeenReady) return <AppShellLoadingState />;
|
|
35
|
+
* return (
|
|
36
|
+
* <AppShellProviders layout={layout}>
|
|
37
|
+
* <div className="my-arrangement">
|
|
38
|
+
* <AppShellRegionOutlet region={ShellRegion.SIDEBAR} placement={HorizontalPlacement.START} />
|
|
39
|
+
* <AppShellRegionOutlet region={ShellRegion.MENUBAR} />
|
|
40
|
+
* <AppShellContentOutlet className="flex-1 relative min-w-0">{children}</AppShellContentOutlet>
|
|
41
|
+
* <AppShellOverlaysOutlet />
|
|
42
|
+
* </div>
|
|
43
|
+
* </AppShellProviders>
|
|
44
|
+
* );
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* Four rules keep a custom layout correct:
|
|
48
|
+
*
|
|
49
|
+
* - **Render `AppShellProviders` exactly once, around the whole shell.** It owns the single open state and the
|
|
50
|
+
* single hotkey registration of the command menu, notification center and quick switcher; two copies would
|
|
51
|
+
* make one shortcut open two dialogs.
|
|
52
|
+
* - **Place every region the application configures.** An outlet renders nothing when its region is not
|
|
53
|
+
* configured, so placing an outlet is always safe; leaving one out silently drops a region.
|
|
54
|
+
* - **Render `AppShellContentOutlet` exactly once.** It is the `<main>` landmark, and overlays portal into it —
|
|
55
|
+
* unless the layout also renders `AppShellOverlayPortalLayer`, which then takes the overlays instead. A layout that
|
|
56
|
+
* transforms its regions (a 3D placement) must render that layer OUTSIDE the transformed subtree: a transformed
|
|
57
|
+
* ancestor is the containing block of every `position: fixed` descendant, so a dialog in `<main>` would be confined
|
|
58
|
+
* to the pane and a menu would be placed in the wrong coordinates.
|
|
59
|
+
* - **Give the root `position: relative`, not `isolation: isolate`,** when the theme may declare a background
|
|
60
|
+
* layer. That layer is painted in its own stacking context above ordinary in-flow content, so shell text with
|
|
61
|
+
* no positioned ancestor is painted UNDER it; positioning the root lifts the whole shell above it. `isolate`
|
|
62
|
+
* would also lift it, but would make the shell one stacking context, so an overlay outside the shell with a
|
|
63
|
+
* lower z-index (a consent prompt) would paint over the shell's own dialogs.
|
|
64
|
+
*/
|
|
65
|
+
/** The layout decisions `useAppShellLayout()` computed, shared with every outlet below the providers. */
|
|
66
|
+
const AppShellLayoutContext = createContext(null);
|
|
67
|
+
/** Lets the content outlet hand its `<main>` element to the providers, which expose it as the portal container. */
|
|
68
|
+
const AppShellPortalTargetContext = createContext(null);
|
|
69
|
+
/** Lets `AppShellOverlayPortalLayer` hand its element to the providers, which then prefer it over `<main>`. */
|
|
70
|
+
const AppShellOverlayLayerTargetContext = createContext(null);
|
|
71
|
+
function useAppShellLayoutContext(consumer) {
|
|
72
|
+
const layout = useContext(AppShellLayoutContext);
|
|
73
|
+
if (!layout) {
|
|
74
|
+
throw new Error(`${consumer} must be rendered inside <AppShellProviders>, which supplies the layout it places regions from.`);
|
|
75
|
+
}
|
|
76
|
+
return layout;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Latches the FIRST time the shell becomes ready.
|
|
80
|
+
*
|
|
81
|
+
* `isLayoutReady` derives from configuration presence and can drop transiently after bootstrap (an
|
|
82
|
+
* organization switch reloading config, for example). Replacing the mounted shell with a loading state on such
|
|
83
|
+
* a drop would unmount every provider and zone below it and destroy navigation state — the failure mode
|
|
84
|
+
* `AppLoadingGate` documents. So a layout shows its loading state only while this returns `false`.
|
|
85
|
+
*/
|
|
86
|
+
export function useAppShellFirstReady(isLayoutReady) {
|
|
87
|
+
const [hasLayoutBeenReady, setHasLayoutBeenReady] = useState(false);
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
if (isLayoutReady)
|
|
90
|
+
setHasLayoutBeenReady(true);
|
|
91
|
+
}, [isLayoutReady]);
|
|
92
|
+
return hasLayoutBeenReady;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The shell's loading state: a centred spinner on the page background, announced politely. What every layout
|
|
96
|
+
* shows while `useAppShellFirstReady` says the shell has never been ready — one component rather than a copy per
|
|
97
|
+
* layout, so the loading state is the same whatever the disposal.
|
|
98
|
+
*/
|
|
99
|
+
export function AppShellLoadingState() {
|
|
100
|
+
return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.SHELL, policyOverride: NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE, children: _jsx("div", { className: "h-screen w-screen bg-background flex items-center justify-center", role: "status", "aria-live": "polite", children: _jsx("div", { className: "text-center", children: _jsx(LoadingSpinner, { size: 32, className: "text-primary mx-auto mb-field", "aria-hidden": "true" }) }) }) }));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The providers every shell region reads, and nothing else — they render no DOM of their own:
|
|
104
|
+
*
|
|
105
|
+
* - `PortalContainerContext`, holding the `<main>` element `AppShellContentOutlet` registers, so overlays opened
|
|
106
|
+
* from any region portal into the content area — or, when the layout renders `AppShellOverlayPortalLayer`, that
|
|
107
|
+
* layer instead;
|
|
108
|
+
* - `HostedComponentInteractionsProvider`, the single owner of the open state and the open hotkey of the
|
|
109
|
+
* interactive hosted components (command menu, notification center, quick switcher), which may be hosted in the
|
|
110
|
+
* menubar and the sidebar at once.
|
|
111
|
+
*/
|
|
112
|
+
export function AppShellProviders({ layout, children }) {
|
|
113
|
+
const [portalContainer, setPortalContainer] = useState(null);
|
|
114
|
+
const [overlayLayer, setOverlayLayer] = useState(null);
|
|
115
|
+
const registerPortalTarget = useCallback((node) => {
|
|
116
|
+
setPortalContainer(node);
|
|
117
|
+
}, []);
|
|
118
|
+
const registerOverlayLayer = useCallback((node) => {
|
|
119
|
+
setOverlayLayer(node);
|
|
120
|
+
}, []);
|
|
121
|
+
return (_jsx(AppShellLayoutContext.Provider, { value: layout, children: _jsx(AppShellPortalTargetContext.Provider, { value: registerPortalTarget, children: _jsx(AppShellOverlayLayerTargetContext.Provider, { value: registerOverlayLayer, children: _jsx(PortalContainerContext.Provider, { value: overlayLayer ?? portalContainer, children: _jsx(HostedComponentInteractionsProvider, { children: children }) }) }) }) }));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* A dedicated layer every overlay (dialog, sheet, menu, popover, tooltip) portals into, for a layout whose regions
|
|
125
|
+
* are TRANSFORMED — a 3D placement. Render it once, inside the providers but OUTSIDE the transformed subtree; the
|
|
126
|
+
* providers then prefer it to `<main>`. A layout that transforms nothing does not need it.
|
|
127
|
+
*
|
|
128
|
+
* It is a zero-size, untransformed, fixed box at the viewport's origin: an overlay positioned `fixed` resolves
|
|
129
|
+
* against the viewport, one positioned `absolute` against the viewport's origin, so floating content lands where its
|
|
130
|
+
* trigger is on screen. It carries the stacking tier overlays need above a layout's own layers.
|
|
131
|
+
*/
|
|
132
|
+
export function AppShellOverlayPortalLayer() {
|
|
133
|
+
const register = useContext(AppShellOverlayLayerTargetContext);
|
|
134
|
+
if (!register) {
|
|
135
|
+
throw new Error('AppShellOverlayPortalLayer must be rendered inside <AppShellProviders>, which exposes it as the portal container.');
|
|
136
|
+
}
|
|
137
|
+
return _jsx("div", { ref: register, "data-shell-overlay-layer": "", className: "fixed left-0 top-0 z-50 h-0 w-0" });
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Renders one shell region's component — the registry-resolved wrapper, with its placement prop — when the
|
|
141
|
+
* application configures that region (and, if `placement` is given, at that placement). Renders nothing
|
|
142
|
+
* otherwise, so placing an outlet for every region is always safe.
|
|
143
|
+
*/
|
|
144
|
+
export function AppShellRegionOutlet(props) {
|
|
145
|
+
const layout = useAppShellLayoutContext('AppShellRegionOutlet');
|
|
146
|
+
const { region, placement } = props;
|
|
147
|
+
const at = (configured) => placement === undefined || placement === configured ? configured : null;
|
|
148
|
+
switch (region) {
|
|
149
|
+
case ShellRegion.ACTIVITY_BAR:
|
|
150
|
+
return layout.hasActivityBar ? _jsx(ApplicationLevel_ActivityBar, {}) : null;
|
|
151
|
+
case ShellRegion.MENUBAR:
|
|
152
|
+
return layout.hasMenubar ? _jsx(ApplicationLevel_MenuBar, {}) : null;
|
|
153
|
+
case ShellRegion.TOOLBAR:
|
|
154
|
+
return layout.hasToolbar ? _jsx(ApplicationLevel_Toolbar, {}) : null;
|
|
155
|
+
case ShellRegion.SIDEBAR: {
|
|
156
|
+
const sidebarPlacement = at(layout.sidebarPlacement);
|
|
157
|
+
return layout.hasSidebar && sidebarPlacement ? _jsx(ApplicationLevel_Sidebar, { placement: sidebarPlacement }) : null;
|
|
158
|
+
}
|
|
159
|
+
case ShellRegion.UTILITY_PANEL: {
|
|
160
|
+
const utilityPanelPlacement = at(layout.utilityPanelPlacement);
|
|
161
|
+
return layout.hasUtilityPanel && utilityPanelPlacement ? _jsx(ApplicationLevel_UtilityPanel, { position: utilityPanelPlacement }) : null;
|
|
162
|
+
}
|
|
163
|
+
case ShellRegion.STATUS_BAR: {
|
|
164
|
+
const statusBarPlacement = at(layout.statusBarPlacement);
|
|
165
|
+
return layout.hasStatusBar && statusBarPlacement ? _jsx(ApplicationLevel_StatusBar, { placement: statusBarPlacement }) : null;
|
|
166
|
+
}
|
|
167
|
+
default: {
|
|
168
|
+
const unhandled = region;
|
|
169
|
+
throw new Error(`AppShellRegionOutlet has no rendering for region "${String(unhandled)}".`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* The content area: the `<main>` landmark carrying `ShellRegion.CONTENT`, the navigation zones, and the floating
|
|
175
|
+
* quick-action button when configured. Its element is registered with `AppShellProviders` as the portal
|
|
176
|
+
* container, so it must be rendered exactly once, inside the providers.
|
|
177
|
+
*/
|
|
178
|
+
export function AppShellContentOutlet({ className, children }) {
|
|
179
|
+
const layout = useAppShellLayoutContext('AppShellContentOutlet');
|
|
180
|
+
const registerPortalTarget = useContext(AppShellPortalTargetContext);
|
|
181
|
+
return (_jsxs("main", { ref: registerPortalTarget ?? undefined, "data-component-area": ShellRegion.CONTENT, className: className, children: [_jsx(NavigationContentAreas, { routerChildren: children }), layout.hasQuickActionButton && _jsx(ApplicationLevel_QuickActionButton, { placement: "floating" })] }));
|
|
182
|
+
}
|
|
183
|
+
/** The shell's overlay layer: navigation dialogs and sheets, then guidance (tours, tooltips, highlights). */
|
|
184
|
+
export function AppShellOverlaysOutlet() {
|
|
185
|
+
return (_jsxs(_Fragment, { children: [_jsx(NavigationOverlays, {}), _jsx(GuidanceRenderer, {})] }));
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=AppShellBuildingBlocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppShellBuildingBlocks.js","sourceRoot":"","sources":["../../../../../src/core/app-shell/AppShellBuildingBlocks.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';\n\nimport { HorizontalPlacement, ShellRegion, SurfaceVariant, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport { LoadingSpinner } from '~wildo-frontend-lib/components/feedback/loading-spinner';\nimport { Surface } from '~wildo-frontend-lib/components/sections/surface';\nimport { NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE } from '~wildo-frontend-lib/core/ui/surface-a11y.utils';\nimport { ApplicationLevel_ActivityBar } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_ActivityBar';\nimport { ApplicationLevel_MenuBar } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_MenuBar';\nimport { ApplicationLevel_QuickActionButton } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_QuickActionButton';\nimport { ApplicationLevel_Sidebar } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_Sidebar';\nimport { ApplicationLevel_StatusBar } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_StatusBar';\nimport { ApplicationLevel_Toolbar } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_Toolbar';\nimport { ApplicationLevel_UtilityPanel } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_UtilityPanel';\nimport { HostedComponentInteractionsProvider } from '~wildo-frontend-lib/components/navigation/app-level/HostedComponentInteractionsProvider';\nimport { GuidanceRenderer } from '~wildo-frontend-lib/core/guidance/GuidanceRenderer';\nimport { NavigationContentAreas, NavigationOverlays } from '~wildo-frontend-lib/core/navigation/NavigationContentAreas';\n\nimport type { StatusBarPlacement } from '~wildo-frontend-lib/core/config/app-level-components.frontend.schemas';\n\nimport type { AppShellLayoutInfo } from './app-shell.schemas';\nimport { PortalContainerContext } from './PortalContainerContext';\n\n/** @wildo_source:part:start saas.frontend.app-shell.building-blocks facet:layer:frontend facet:family:app-shell facet:audience:app-developer */\n/**\n * # App shell building blocks\n *\n * The signed-in shell is a LAYOUT — where the regions sit — over parts that do not depend on the layout: the\n * region components themselves (each resolved from the component registry by its wrapper), the content area,\n * the overlays, and two providers every region reads. These building blocks are those parts, so a layout\n * preset only decides the ARRANGEMENT. `AppLayoutPreset_MainContainer_Default` is composed from them, and any\n * other layout container an application registers should be too — a different arrangement of the same regions,\n * or, later, an alternative rendering that draws decoration around them.\n *\n * A layout preset uses them like this:\n *\n * ```tsx\n * const layout = useAppShellLayout();\n * const hasBeenReady = useAppShellFirstReady(layout.isLayoutReady);\n * if (!layout.isLayoutReady && !hasBeenReady) return <AppShellLoadingState />;\n * return (\n * <AppShellProviders layout={layout}>\n * <div className=\"my-arrangement\">\n * <AppShellRegionOutlet region={ShellRegion.SIDEBAR} placement={HorizontalPlacement.START} />\n * <AppShellRegionOutlet region={ShellRegion.MENUBAR} />\n * <AppShellContentOutlet className=\"flex-1 relative min-w-0\">{children}</AppShellContentOutlet>\n * <AppShellOverlaysOutlet />\n * </div>\n * </AppShellProviders>\n * );\n * ```\n *\n * Four rules keep a custom layout correct:\n *\n * - **Render `AppShellProviders` exactly once, around the whole shell.** It owns the single open state and the\n * single hotkey registration of the command menu, notification center and quick switcher; two copies would\n * make one shortcut open two dialogs.\n * - **Place every region the application configures.** An outlet renders nothing when its region is not\n * configured, so placing an outlet is always safe; leaving one out silently drops a region.\n * - **Render `AppShellContentOutlet` exactly once.** It is the `<main>` landmark, and overlays portal into it —\n * unless the layout also renders `AppShellOverlayPortalLayer`, which then takes the overlays instead. A layout that\n * transforms its regions (a 3D placement) must render that layer OUTSIDE the transformed subtree: a transformed\n * ancestor is the containing block of every `position: fixed` descendant, so a dialog in `<main>` would be confined\n * to the pane and a menu would be placed in the wrong coordinates.\n * - **Give the root `position: relative`, not `isolation: isolate`,** when the theme may declare a background\n * layer. That layer is painted in its own stacking context above ordinary in-flow content, so shell text with\n * no positioned ancestor is painted UNDER it; positioning the root lifts the whole shell above it. `isolate`\n * would also lift it, but would make the shell one stacking context, so an overlay outside the shell with a\n * lower z-index (a consent prompt) would paint over the shell's own dialogs.\n */\n\n/** The layout decisions `useAppShellLayout()` computed, shared with every outlet below the providers. */\nconst AppShellLayoutContext = createContext<AppShellLayoutInfo | null>(null);\n\n/** Lets the content outlet hand its `<main>` element to the providers, which expose it as the portal container. */\nconst AppShellPortalTargetContext = createContext<((node: HTMLElement | null) => void) | null>(null);\n\n/** Lets `AppShellOverlayPortalLayer` hand its element to the providers, which then prefer it over `<main>`. */\nconst AppShellOverlayLayerTargetContext = createContext<((node: HTMLElement | null) => void) | null>(null);\n\nfunction useAppShellLayoutContext(consumer: string): AppShellLayoutInfo {\n const layout = useContext(AppShellLayoutContext);\n if (!layout) {\n throw new Error(`${consumer} must be rendered inside <AppShellProviders>, which supplies the layout it places regions from.`);\n }\n return layout;\n}\n\n/**\n * Latches the FIRST time the shell becomes ready.\n *\n * `isLayoutReady` derives from configuration presence and can drop transiently after bootstrap (an\n * organization switch reloading config, for example). Replacing the mounted shell with a loading state on such\n * a drop would unmount every provider and zone below it and destroy navigation state — the failure mode\n * `AppLoadingGate` documents. So a layout shows its loading state only while this returns `false`.\n */\nexport function useAppShellFirstReady(isLayoutReady: boolean): boolean {\n const [hasLayoutBeenReady, setHasLayoutBeenReady] = useState(false);\n useEffect(() => {\n if (isLayoutReady) setHasLayoutBeenReady(true);\n }, [isLayoutReady]);\n return hasLayoutBeenReady;\n}\n\n/**\n * The shell's loading state: a centred spinner on the page background, announced politely. What every layout\n * shows while `useAppShellFirstReady` says the shell has never been ready — one component rather than a copy per\n * layout, so the loading state is the same whatever the disposal.\n */\nexport function AppShellLoadingState(): React.JSX.Element {\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.SHELL} policyOverride={NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE}>\n <div className=\"h-screen w-screen bg-background flex items-center justify-center\" role=\"status\" aria-live=\"polite\">\n <div className=\"text-center\">\n <LoadingSpinner size={32} className=\"text-primary mx-auto mb-field\" aria-hidden=\"true\" />\n </div>\n </div>\n </Surface>\n );\n}\n\nexport interface AppShellProvidersProps {\n /** The result of `useAppShellLayout()`, computed once by the layout and shared with every outlet. */\n layout: AppShellLayoutInfo;\n children: React.ReactNode;\n}\n\n/**\n * The providers every shell region reads, and nothing else — they render no DOM of their own:\n *\n * - `PortalContainerContext`, holding the `<main>` element `AppShellContentOutlet` registers, so overlays opened\n * from any region portal into the content area — or, when the layout renders `AppShellOverlayPortalLayer`, that\n * layer instead;\n * - `HostedComponentInteractionsProvider`, the single owner of the open state and the open hotkey of the\n * interactive hosted components (command menu, notification center, quick switcher), which may be hosted in the\n * menubar and the sidebar at once.\n */\nexport function AppShellProviders({ layout, children }: AppShellProvidersProps): React.JSX.Element {\n const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n const [overlayLayer, setOverlayLayer] = useState<HTMLElement | null>(null);\n const registerPortalTarget = useCallback((node: HTMLElement | null) => {\n setPortalContainer(node);\n }, []);\n const registerOverlayLayer = useCallback((node: HTMLElement | null) => {\n setOverlayLayer(node);\n }, []);\n return (\n <AppShellLayoutContext.Provider value={layout}>\n <AppShellPortalTargetContext.Provider value={registerPortalTarget}>\n <AppShellOverlayLayerTargetContext.Provider value={registerOverlayLayer}>\n {/* The dedicated overlay layer wins when a layout renders one; otherwise overlays stay in `<main>`. */}\n <PortalContainerContext.Provider value={overlayLayer ?? portalContainer}>\n <HostedComponentInteractionsProvider>{children}</HostedComponentInteractionsProvider>\n </PortalContainerContext.Provider>\n </AppShellOverlayLayerTargetContext.Provider>\n </AppShellPortalTargetContext.Provider>\n </AppShellLayoutContext.Provider>\n );\n}\n\n/**\n * A dedicated layer every overlay (dialog, sheet, menu, popover, tooltip) portals into, for a layout whose regions\n * are TRANSFORMED — a 3D placement. Render it once, inside the providers but OUTSIDE the transformed subtree; the\n * providers then prefer it to `<main>`. A layout that transforms nothing does not need it.\n *\n * It is a zero-size, untransformed, fixed box at the viewport's origin: an overlay positioned `fixed` resolves\n * against the viewport, one positioned `absolute` against the viewport's origin, so floating content lands where its\n * trigger is on screen. It carries the stacking tier overlays need above a layout's own layers.\n */\nexport function AppShellOverlayPortalLayer(): React.JSX.Element {\n const register = useContext(AppShellOverlayLayerTargetContext);\n if (!register) {\n throw new Error('AppShellOverlayPortalLayer must be rendered inside <AppShellProviders>, which exposes it as the portal container.');\n }\n return <div ref={register} data-shell-overlay-layer=\"\" className=\"fixed left-0 top-0 z-50 h-0 w-0\" />;\n}\n\n/**\n * Which region to render, and — for a region that sits at an edge — at which edge. The content area is not\n * among them: it has its own outlet, because it owns `<main>` and the page.\n *\n * `placement` renders the region only when the application configured THAT placement. A layout that places the\n * same region at two positions — as the default layout does for the sidebar's start and end edges — renders one\n * outlet per edge. Omitted, the region renders at whatever placement is configured. The type admits only the\n * placement axis the region has, so a sidebar cannot be asked for a vertical edge and render nothing.\n */\nexport type AppShellRegionOutletProps =\n | { region: ShellRegion.SIDEBAR | ShellRegion.UTILITY_PANEL; placement?: HorizontalPlacement.START | HorizontalPlacement.END }\n | { region: ShellRegion.STATUS_BAR; placement?: StatusBarPlacement }\n | { region: ShellRegion.ACTIVITY_BAR | ShellRegion.MENUBAR | ShellRegion.TOOLBAR; placement?: never };\n\n/**\n * Renders one shell region's component — the registry-resolved wrapper, with its placement prop — when the\n * application configures that region (and, if `placement` is given, at that placement). Renders nothing\n * otherwise, so placing an outlet for every region is always safe.\n */\nexport function AppShellRegionOutlet(props: AppShellRegionOutletProps): React.JSX.Element | null {\n const layout = useAppShellLayoutContext('AppShellRegionOutlet');\n const { region, placement } = props;\n const at = <T extends HorizontalPlacement | VerticalPlacement>(configured: T): T | null =>\n placement === undefined || placement === configured ? configured : null;\n\n switch (region) {\n case ShellRegion.ACTIVITY_BAR:\n return layout.hasActivityBar ? <ApplicationLevel_ActivityBar /> : null;\n case ShellRegion.MENUBAR:\n return layout.hasMenubar ? <ApplicationLevel_MenuBar /> : null;\n case ShellRegion.TOOLBAR:\n return layout.hasToolbar ? <ApplicationLevel_Toolbar /> : null;\n case ShellRegion.SIDEBAR: {\n const sidebarPlacement = at(layout.sidebarPlacement);\n return layout.hasSidebar && sidebarPlacement ? <ApplicationLevel_Sidebar placement={sidebarPlacement} /> : null;\n }\n case ShellRegion.UTILITY_PANEL: {\n const utilityPanelPlacement = at(layout.utilityPanelPlacement);\n return layout.hasUtilityPanel && utilityPanelPlacement ? <ApplicationLevel_UtilityPanel position={utilityPanelPlacement} /> : null;\n }\n case ShellRegion.STATUS_BAR: {\n const statusBarPlacement = at(layout.statusBarPlacement);\n return layout.hasStatusBar && statusBarPlacement ? <ApplicationLevel_StatusBar placement={statusBarPlacement} /> : null;\n }\n default: {\n const unhandled: never = region;\n throw new Error(`AppShellRegionOutlet has no rendering for region \"${String(unhandled)}\".`);\n }\n }\n}\n\nexport interface AppShellContentOutletProps {\n /** Classes for the `<main>` element — the layout decides how the content area sizes within its arrangement. */\n className?: string;\n /** The route outlet the layout container receives; rendered by the navigation zones while their stack is empty. */\n children?: React.ReactNode;\n}\n\n/**\n * The content area: the `<main>` landmark carrying `ShellRegion.CONTENT`, the navigation zones, and the floating\n * quick-action button when configured. Its element is registered with `AppShellProviders` as the portal\n * container, so it must be rendered exactly once, inside the providers.\n */\nexport function AppShellContentOutlet({ className, children }: AppShellContentOutletProps): React.JSX.Element {\n const layout = useAppShellLayoutContext('AppShellContentOutlet');\n const registerPortalTarget = useContext(AppShellPortalTargetContext);\n return (\n <main ref={registerPortalTarget ?? undefined} data-component-area={ShellRegion.CONTENT} className={className}>\n <NavigationContentAreas routerChildren={children} />\n\n {/* Floating Quick Action Button */}\n {layout.hasQuickActionButton && <ApplicationLevel_QuickActionButton placement=\"floating\" />}\n </main>\n );\n}\n\n/** The shell's overlay layer: navigation dialogs and sheets, then guidance (tours, tooltips, highlights). */\nexport function AppShellOverlaysOutlet(): React.JSX.Element {\n return (\n <>\n <NavigationOverlays />\n <GuidanceRenderer />\n </>\n );\n}\n/** @wildo_source:part:end saas.frontend.app-shell.building-blocks */\n"]}
|
|
@@ -10,8 +10,11 @@ export interface PortalTargetResolution {
|
|
|
10
10
|
* portal their content into the provided container instead of `document.body`.
|
|
11
11
|
*
|
|
12
12
|
* Primary use cases:
|
|
13
|
-
* -
|
|
14
|
-
*
|
|
13
|
+
* - Keeping overlays inside the shell's content area: `AppShellProviders` sets it to the `<main>` element
|
|
14
|
+
* `AppShellContentOutlet` registers, for every layout composed from the shell building blocks — or to the
|
|
15
|
+
* `AppShellOverlayPortalLayer` a layout that transforms its regions renders outside them. (An earlier
|
|
16
|
+
* version of this note named a Three.js `<Html>` panel; that design was rejected because such a panel is a
|
|
17
|
+
* separate React root that loses every context — see #1820.)
|
|
15
18
|
* - Scoping overlay z-index stacking to a specific subtree.
|
|
16
19
|
*
|
|
17
20
|
* When `null` (the default), overlays portal to `document.body` — matching the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PortalContainerContext.d.ts","sourceRoot":"","sources":["../../../../../src/core/app-shell/PortalContainerContext.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EAClB,MAAM,qCAAqC,CAAC;AAG7C,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,WAAW,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,OAAO,CAAC;CACvB;AAYD
|
|
1
|
+
{"version":3,"file":"PortalContainerContext.d.ts","sourceRoot":"","sources":["../../../../../src/core/app-shell/PortalContainerContext.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EAClB,MAAM,qCAAqC,CAAC;AAG7C,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,WAAW,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,OAAO,CAAC;CACvB;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,sBAAsB,sCAA0C,CAAC;AAEvE;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,SAAS,CAG5D;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,wBAAwB,GACxC,sBAAsB,CA+CxB;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAelG;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,cAAc,EACvB,cAAc,CAAC,EAAE,wBAAwB,GACxC,MAAM,CAKR;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -14,8 +14,11 @@ function resolveCustomPortalTarget(customPortalTargetId) {
|
|
|
14
14
|
* portal their content into the provided container instead of `document.body`.
|
|
15
15
|
*
|
|
16
16
|
* Primary use cases:
|
|
17
|
-
* -
|
|
18
|
-
*
|
|
17
|
+
* - Keeping overlays inside the shell's content area: `AppShellProviders` sets it to the `<main>` element
|
|
18
|
+
* `AppShellContentOutlet` registers, for every layout composed from the shell building blocks — or to the
|
|
19
|
+
* `AppShellOverlayPortalLayer` a layout that transforms its regions renders outside them. (An earlier
|
|
20
|
+
* version of this note named a Three.js `<Html>` panel; that design was rejected because such a panel is a
|
|
21
|
+
* separate React root that loses every context — see #1820.)
|
|
19
22
|
* - Scoping overlay z-index stacking to a specific subtree.
|
|
20
23
|
*
|
|
21
24
|
* When `null` (the default), overlays portal to `document.body` — matching the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PortalContainerContext.js","sourceRoot":"","sources":["../../../../../src/core/app-shell/PortalContainerContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAMxF,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAO1D,MAAM,yBAAyB,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AAE9F,SAAS,yBAAyB,CAAC,oBAAmC;IACpE,IAAI,CAAC,oBAAoB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;AACvD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"PortalContainerContext.js","sourceRoot":"","sources":["../../../../../src/core/app-shell/PortalContainerContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import { createContext, useContext, useEffect, useLayoutEffect, useState } from 'react';\nimport {\n SurfaceVariant,\n type DeepPartialSurfacePolicy,\n type StackingTier,\n} from '@wildo-ai/presets-components-models';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\n\nexport interface PortalTargetResolution {\n container: HTMLElement | undefined;\n shouldPortal: boolean;\n}\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nfunction resolveCustomPortalTarget(customPortalTargetId: string | null): HTMLElement | null {\n if (!customPortalTargetId || typeof document === 'undefined') {\n return null;\n }\n\n return document.getElementById(customPortalTargetId);\n}\n\n/**\n * Provides a DOM element that Radix UI Portal components should render into.\n *\n * When set, all overlay components (DropdownMenu, Popover, Tooltip, Dialog, etc.)\n * portal their content into the provided container instead of `document.body`.\n *\n * Primary use cases:\n * - Keeping overlays inside the shell's content area: `AppShellProviders` sets it to the `<main>` element\n * `AppShellContentOutlet` registers, for every layout composed from the shell building blocks — or to the\n * `AppShellOverlayPortalLayer` a layout that transforms its regions renders outside them. (An earlier\n * version of this note named a Three.js `<Html>` panel; that design was rejected because such a panel is a\n * separate React root that loses every context — see #1820.)\n * - Scoping overlay z-index stacking to a specific subtree.\n *\n * When `null` (the default), overlays portal to `document.body` — matching the\n * standard Radix UI behavior.\n */\nconst PortalContainerContext = createContext<HTMLElement | null>(null);\n\n/**\n * Returns the portal container element from the nearest `PortalContainerContext.Provider`,\n * or `undefined` if none is set (which tells Radix to use `document.body`).\n *\n * Preset components call this inside their Portal wrappers:\n * ```tsx\n * const container = usePortalContainer();\n * <DropdownMenuPrimitive.Portal container={container}>\n * ```\n */\nexport function usePortalContainer(): HTMLElement | undefined {\n const container = useContext(PortalContainerContext);\n return container ?? undefined;\n}\n\nexport function useSurfacePolicyPortalTarget(\n variant: SurfaceVariant,\n policyOverride?: DeepPartialSurfacePolicy,\n): PortalTargetResolution {\n const appPortalContainer = usePortalContainer();\n const { getSurfacePolicy } = useUI();\n const portalTarget = getSurfacePolicy?.(variant, policyOverride)?.stacking?.portalTarget;\n const customPortalTargetId =\n typeof portalTarget === 'string' && portalTarget !== 'inline' && portalTarget !== 'app-portal' && portalTarget !== 'reset'\n ? portalTarget\n : null;\n const [customPortalContainer, setCustomPortalContainer] = useState<HTMLElement | null>(() =>\n resolveCustomPortalTarget(customPortalTargetId),\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!customPortalTargetId || typeof document === 'undefined') {\n setCustomPortalContainer(null);\n return;\n }\n\n const existingTarget = resolveCustomPortalTarget(customPortalTargetId);\n setCustomPortalContainer(existingTarget);\n\n if (existingTarget || typeof MutationObserver === 'undefined') {\n return;\n }\n\n const observer = new MutationObserver(() => {\n const nextTarget = resolveCustomPortalTarget(customPortalTargetId);\n if (!nextTarget) return;\n\n setCustomPortalContainer(nextTarget);\n observer.disconnect();\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => observer.disconnect();\n }, [customPortalTargetId]);\n\n if (portalTarget === 'inline') {\n return { container: undefined, shouldPortal: false };\n }\n\n if (customPortalContainer) {\n return { container: customPortalContainer, shouldPortal: true };\n }\n\n return { container: appPortalContainer, shouldPortal: true };\n}\n\nexport function resolveSurfacePolicyStackingClass(tier: StackingTier | 'reset' | undefined): string {\n switch (tier) {\n case 'content':\n return 'z-(--z-content)';\n case 'transient':\n return 'z-(--z-transient)';\n case 'guidance':\n return 'z-(--z-guidance)';\n case 'critical':\n return 'z-(--z-critical)';\n case 'overlay':\n case 'reset':\n default:\n return 'z-(--z-overlay)';\n }\n}\n\nexport function useSurfacePolicyStackingClass(\n variant: SurfaceVariant,\n policyOverride?: DeepPartialSurfacePolicy,\n): string {\n const { getSurfacePolicy } = useUI();\n const stackingTier = getSurfacePolicy?.(variant, policyOverride)?.stacking?.stackingTier;\n\n return resolveSurfacePolicyStackingClass(stackingTier);\n}\n\nexport { PortalContainerContext };\n"]}
|
|
@@ -2,10 +2,10 @@ import type React from 'react';
|
|
|
2
2
|
import type { UseFormReturn } from 'react-hook-form';
|
|
3
3
|
import type { z } from 'zod';
|
|
4
4
|
import { HorizontalPlacement } from '@wildo-ai/presets-components-models';
|
|
5
|
+
import type { VerticalPlacement } from '@wildo-ai/presets-components-models';
|
|
5
6
|
import type { ForeignKeyDisplayMode, ViewportBreakpoint } from '@wildo-ai/zod-decorators';
|
|
6
7
|
import type { AppScopeFieldDefinition } from '../../core/resources/resources.frontend.schemas';
|
|
7
|
-
import type { ApplicationLevelComponentType, StatusBarItemType } from '../../core/config/app-level-components.frontend.schemas';
|
|
8
|
-
import type { VerticalPlacement } from '@wildo-ai/presets-components-models';
|
|
8
|
+
import type { ApplicationLevelComponentType, StatusBarItemType, StatusBarPlacement } from '../../core/config/app-level-components.frontend.schemas';
|
|
9
9
|
import type { QuickSwitcherFieldPresentation, UserDropdownAvatarDisplay, UserDropdownSection } from '../../core/config/app-configuration-frontend.schemas';
|
|
10
10
|
import type { FrontendComponentType, PlacementSide } from '@wildo-ai/presets-components-models';
|
|
11
11
|
import type { ComponentRegistryRef } from '../../core/components-registry/component-registry.frontend.schemas';
|
|
@@ -176,13 +176,11 @@ export interface SidebarConfigObject {
|
|
|
176
176
|
}
|
|
177
177
|
export declare function isSidebarConfigObject(config: unknown): config is SidebarConfigObject;
|
|
178
178
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
* This guard identifies the object form, distinguishing it from both
|
|
182
|
-
* the boolean and string-shorthand variants.
|
|
179
|
+
* The object form of the status bar's configuration. The configuration is `boolean | StatusBarPlacement (the
|
|
180
|
+
* string shorthand) | StatusBarConfigObject`.
|
|
183
181
|
*/
|
|
184
182
|
export interface StatusBarConfigObject {
|
|
185
|
-
placement?:
|
|
183
|
+
placement?: StatusBarPlacement;
|
|
186
184
|
showMemoryUsage?: boolean;
|
|
187
185
|
showNotificationCount?: boolean;
|
|
188
186
|
showConnectionStatus?: boolean;
|
|
@@ -194,6 +192,7 @@ export interface StatusBarConfigObject {
|
|
|
194
192
|
statusItems?: StatusBarConfigItem[];
|
|
195
193
|
style?: React.CSSProperties;
|
|
196
194
|
}
|
|
195
|
+
/** Narrowing guard for the object form, distinguishing it from the boolean and string-shorthand forms. */
|
|
197
196
|
export declare function isStatusBarConfigObject(config: unknown): config is StatusBarConfigObject;
|
|
198
197
|
export type UtilityPanelPlacement = HorizontalPlacement.START | HorizontalPlacement.END;
|
|
199
198
|
export interface UtilityPanelConfigObject {
|
|
@@ -328,8 +327,8 @@ export interface AppShellLayoutInfo {
|
|
|
328
327
|
hasActivityBar: boolean;
|
|
329
328
|
hasQuickActionButton: boolean;
|
|
330
329
|
hasUtilityPanel: boolean;
|
|
331
|
-
sidebarPlacement: HorizontalPlacement;
|
|
332
|
-
statusBarPlacement:
|
|
330
|
+
sidebarPlacement: HorizontalPlacement.START | HorizontalPlacement.END;
|
|
331
|
+
statusBarPlacement: StatusBarPlacement;
|
|
333
332
|
utilityPanelPlacement: UtilityPanelPlacement;
|
|
334
333
|
isLayoutReady: boolean;
|
|
335
334
|
}
|
|
@@ -804,9 +803,17 @@ export interface MenuUserOrgBehavior {
|
|
|
804
803
|
_id: string;
|
|
805
804
|
name: string;
|
|
806
805
|
} | undefined;
|
|
806
|
+
/**
|
|
807
|
+
* The organizations the person can switch into. `viaProviderOrganizationName` is present only on a CLIENT
|
|
808
|
+
* organization they work in as a service firm's expert (#1597) — the firm's name, so the switcher can
|
|
809
|
+
* group clients apart from the person's own organizations and say through whom each is reached. A
|
|
810
|
+
* client appears only while its relationship is live: the organization read behind this list passes the
|
|
811
|
+
* per-request live filter, so an ended or paused relationship drops the client from the switcher.
|
|
812
|
+
*/
|
|
807
813
|
organizations: {
|
|
808
814
|
_id: string;
|
|
809
815
|
name: string;
|
|
816
|
+
viaProviderOrganizationName?: string;
|
|
810
817
|
}[];
|
|
811
818
|
/** Dropdown sections to render. The `SETTINGS` entry opens the unified Settings Hub. */
|
|
812
819
|
sections: UserDropdownSection[];
|
|
@@ -843,6 +850,8 @@ export interface MenuBarBehavior {
|
|
|
843
850
|
group?: string;
|
|
844
851
|
/** Whether this item is the current destination — at most one item is (see `useMenuBarBehavior`). */
|
|
845
852
|
isActive: boolean;
|
|
853
|
+
/** The badge KEY to draw beside the label (`NavigationItemBadge`), when the declaration names one. */
|
|
854
|
+
notificationBadgeRef?: string;
|
|
846
855
|
onExecute: () => void;
|
|
847
856
|
}[];
|
|
848
857
|
menubarConfig: {
|