@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":"ResourceLayout_Header.js","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_Header.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo, useEffect, useState, useRef } from 'react';\n\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\nimport { Skeleton } from '~wildo-frontend-lib/components/feedback/skeleton';\nimport {\n resolveOptionalResourceHeaderDescription,\n} from '~wildo-frontend-lib/core/i18n/component-label-resolution.utils';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { useIconRegistry } from '~wildo-frontend-lib/core/icons/useIconRegistry';\nimport { useOptionalResourceOperationViewContext } from '~wildo-frontend-lib/core/resources/ResourceOperationViewContext';\nimport { FrontendResourceUtils, frontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { resolveEffectiveCoreOperationFromOperation } from '~wildo-frontend-lib/core/resources/operation-semantics.frontend.utils';\nimport { HeaderIconPlacement } from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport {\n resolveCanonicalRMMReadOperation,\n} from '~wildo-frontend-lib/core/resources/rmm/canonical-read.frontend.utils';\n\nimport { ApplicationLevel_NavigationBack, NavigationBackHost } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_NavigationBack';\nimport { ResourceLayout_Breadcrumb } from './ResourceLayout_Breadcrumb';\nimport { AutomaticDisplayer } from '~wildo-frontend-lib/components/data-display/AutomaticDisplayer';\nimport { ResourceHeaderContextProvider } from './skeleton/ResourceHeaderTitle';\nimport { DisplayChromeMode } from '@wildo-ai/zod-decorators';\nimport {\n CoreResourceOperation,\n} from '@wildo-ai/saas-models';\nimport { IconCategory, IconSize, StandardIconReference } from '~wildo-frontend-lib/core/icons/icon-registry.frontend.schemas';\nimport { extractErrorInfo, type DisplayableError } from '~wildo-frontend-lib/core/errors/errors.frontend.schemas';\nimport { useUserFacingErrorMessage } from '~wildo-frontend-lib/core/errors/useUserFacingErrorMessage';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { useComponentLoading } from '~wildo-frontend-lib/core/loading/useComponentLoading';\nimport { buildResourceLoadingScope } from '~wildo-frontend-lib/core/loading/loading-scope.frontend.utils';\nimport { useSectionHostProvidesHeading } from './skeleton/SectionHostHeadingContext';\n\nimport { BaseResourcesLayoutProps } from './component-props.resources-layout.frontend.schemas'\n\nimport { ComponentPresetProps } from '~wildo-frontend-lib/core/components-registry/component-registry.frontend.schemas';\nimport { createComponentResolver } from '~wildo-frontend-lib/core/components-registry/component-resolver.frontend.helper';\nimport { CorePresetNames, FrontendComponentType } from '@wildo-ai/presets-components-models';\n\n/**\n * The header's band while a record's name is on its way: one skeleton line where the name will sit, with\n * the action cluster where it will stay. Same outer box and row as the real band below, so the swap moves\n * nothing beneath the header. `h-7` is `text-xl`'s own line box.\n */\nfunction PendingRecordNameBand({ className, actions }: { className?: string; actions?: React.ReactNode }): React.JSX.Element {\n return (\n <div className={cn(className || 'flex-1')} data-resource-header-pending=\"true\">\n <div className=\"flex items-center gap-field\">\n <div className=\"min-w-0 flex-1\">\n <Skeleton className=\"h-7 w-48 max-w-full\" aria-hidden=\"true\" />\n </div>\n {actions && <div className=\"flex shrink-0 items-center\">{actions}</div>}\n </div>\n </div>\n );\n}\n\n// --- Contract ---\nexport interface ResourceLayoutPreset_Header_DefaultProps extends BaseResourcesLayoutProps {\n title?: string;\n description?: string;\n /**\n * Extra classes for the header root.\n */\n className?: string;\n /**\n * Right-aligned action cluster rendered INSIDE the title row (after the\n * flex-1 title), so actions are vertically centered on the RESOURCE NAME —\n * never on the breadcrumb line above it. Hosts pass their operation bar\n * here instead of laying it beside the header in their own row; owning the\n * band in one place is what makes the alignment un-driftable.\n */\n actions?: React.ReactNode;\n}\n\n/**\n * Resource types already warned about a title-less authored header template —\n * module-level so repeated mounts produce ONE warning, not one per render.\n */\nconst warnedMissingHeaderTitleResourceTypes = new Set<string>();\n\n/**\n * Centralized resource header component.\n * Displays title and description for resource operations with consistent styling.\n */\nexport const ResourceLayoutPreset_Header_Default: React.FC<ResourceLayoutPreset_Header_DefaultProps> = ({\n resourceContext,\n navigationZone,\n navigationInitiator,\n title: titleOverride,\n description: descriptionOverride,\n className,\n actions,\n}) => {\n const hostProvidesHeading = useSectionHostProvidesHeading();\n const ambientOperationViewContext = useOptionalResourceOperationViewContext();\n // The operation-view provider describes the ROUTED host operation, and an\n // EMBEDDED child surface renders inside it: a nested relationship section\n // mounts the child's own list/read with an explicit `resourceContext` while\n // the parent's provider is still overhead. Trusting the ambient value there\n // makes the child's header announce the PARENT's identity — the todo-list\n // page rendering \"Summary probe — Home · Active\" a second time INSIDE its own\n // \"Todos\" section. Explicit context therefore wins whenever the two describe\n // different resources; the ambient value is only adopted when it is genuinely\n // about the same resource this header is rendering (the routed host case it\n // was introduced for).\n const operationViewContext = ambientOperationViewContext?.resourceContext?.resourceType === resourceContext.resourceType\n ? ambientOperationViewContext\n : undefined;\n const effectiveResourceContext = operationViewContext?.resourceContext ?? resourceContext;\n const { resourceType, operation, contextResourceIdentifiers } = effectiveResourceContext;\n const { tResourceHeader, tResourceOperation, t, isReady } = useI18n({\n component: FrontendComponentType.RESOURCES_LAYOUTS_HEADER,\n resource: resourceType,\n });\n // Stable identity, so the label-fetch effect may call it without listing it.\n const toUserFacingErrorMessage = useUserFacingErrorMessage();\n const { registry, doOperation } = useResourceRegistry();\n const { renderIcon } = useIconRegistry();\n const operationId = String(operation.operationIdentifier);\n const resourceId = frontendResourceUtils.getPrimaryResourceIdentifier(effectiveResourceContext);\n\n // Get resource configuration and check for getFrontendResourceLabel\n const computedResourceConfig = useMemo(() => {\n return registry.resourceConfigurations[resourceType];\n }, [registry, resourceType]);\n const resourceConfig = operationViewContext?.resourceConfig ?? computedResourceConfig;\n\n const getFrontendResourceLabel = resourceConfig?.frontendConfiguration?.getFrontendResourceLabel;\n // A record label may replace the operation title ONLY on a surface that\n // targets one persisted row (effective READ / UPDATE / DELETE semantics).\n // On collection surfaces (LIST/SEARCH/…) and CREATE, an own-type id in\n // `contextResourceIdentifiers` is AMBIENT SCOPE — e.g. the quick-switcher's\n // selected record — not \"the current record\": without this gate, selecting a\n // list in the switcher renamed the whole todo-lists LISTING to that record's\n // label (2026-08-19).\n const effectiveCoreOperation = resolveEffectiveCoreOperationFromOperation(operation);\n const isRowScopedSurface =\n effectiveCoreOperation === CoreResourceOperation.READ\n || effectiveCoreOperation === CoreResourceOperation.UPDATE\n || effectiveCoreOperation === CoreResourceOperation.DELETE;\n // An authored `layout.header` template composes the identity line from the\n // RECORD, so it needs the row fetched even when the resource declares no\n // `getFrontendResourceLabel` (the template may show only badges and rely on\n // the operation-title fallback for the name).\n const headerTemplate = resourceConfig?.frontendConfiguration?.layout?.header;\n const shouldFetchLabel = !!getFrontendResourceLabel && !!resourceId && isRowScopedSurface;\n const shouldFetchRecord = (!!getFrontendResourceLabel || !!headerTemplate) && !!resourceId && isRowScopedSurface;\n // Boolean (not object identity) — the label-fetch effect only needs \"is a\n // config present\", and the context-provided config object may churn identity.\n const hasResourceConfig = !!resourceConfig;\n\n // State for resource label\n const [resourceLabel, setResourceLabel] = useState<string | null>(null);\n /** The fetched record — feeds an authored `layout.header` template's fields. */\n const [resourceData, setResourceData] = useState<Record<string, unknown> | undefined>(undefined);\n const [isLoadingLabel, setIsLoadingLabel] = useState(false);\n // E-3: surface non-fatal label fetch errors (graceful degradation: title still shows)\n const [labelError, setLabelError] = useState<DisplayableError | null>(null);\n\n // Build a stable key from contextResourceIdentifiers for memoization\n const contextResourceIdentifiersKey = useMemo(() => {\n return FrontendResourceUtils.buildContextResourceIdentifiersKey(contextResourceIdentifiers);\n }, [contextResourceIdentifiers]);\n\n // Build contextual parameters for API calls\n const computedContextualParameters = useMemo(() => {\n return FrontendResourceUtils.buildContextualParameters(contextResourceIdentifiers, registry);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- using stable key instead of object reference\n }, [contextResourceIdentifiersKey, registry]);\n const contextualParameters = operationViewContext?.contextualParameters ?? computedContextualParameters;\n\n // Content-stable keys for the label-fetch effect below (audit I1). The\n // provider-supplied `contextualParameters` / `effectiveResourceContext`\n // objects are commonly re-created on every provider render, so depending on\n // their IDENTITY re-fires the fetch effect — and its GET — on unrelated\n // re-renders. Keying by content mirrors `contextResourceIdentifiersKey`.\n const contextualParametersKey = useMemo(() => {\n return Object.entries(contextualParameters)\n .map(([key, value]) => `${key}:${value}`)\n .sort()\n .join('|');\n }, [contextualParameters]);\n const parentResourcesRequirementsKey = useMemo(\n () => JSON.stringify(effectiveResourceContext.parentResourcesRequirements ?? null),\n [effectiveResourceContext.parentResourcesRequirements],\n );\n\n const readOperation = useMemo(() => {\n if (operation.operationIdentifier === CoreResourceOperation.READ) {\n return operation;\n }\n\n return operationViewContext?.resolvePreferredOperation(CoreResourceOperation.READ, {\n requireAddressable: true,\n })\n ?? resolveCanonicalRMMReadOperation(resourceType, registry, {\n hasResourceId: Boolean(resourceId),\n contextResourceIdentifiers,\n contextualParameters,\n });\n }, [operation, operationViewContext, resourceType, registry, resourceId, contextResourceIdentifiers, contextualParameters]);\n\n // Build operation path key for the strongest available read-like operation.\n // Opportunistic: this key is only consumed by the label-fetch effect below\n // (gated on `shouldFetchLabel`). A LIST-only surface with no URL-bearing single\n // READ (e.g. SCIM tokens) legitimately has none — use the non-throwing variant\n // so the header still renders instead of crashing the whole surface.\n const operationPathKey = useMemo(() => {\n return FrontendResourceUtils.tryBuildForeignKeyReadOperationPath(\n resourceType,\n registry,\n readOperation,\n );\n }, [resourceType, registry, readOperation]);\n\n // L-1: derive isInitialLoad / isRefreshing from LoadingContext (Tier-2).\n // The label fetch goes through doOperation which fires LOADING_RESOURCE_*\n // events for (resourceType, READ). We use this to gate the label render so\n // a stale label doesn't flash during a re-fetch.\n const headerLoading = useComponentLoading(\n buildResourceLoadingScope({\n resourceType,\n operation: readOperation\n ? ((readOperation as { operationIdentifier?: string }).operationIdentifier ?? CoreResourceOperation.READ)\n : CoreResourceOperation.READ,\n discriminator: resourceId ?? undefined,\n }),\n );\n\n // Use refs to avoid infinite loops from unstable function references\n const doOperationRef = useRef(doOperation);\n const tRef = useRef(t);\n\n useEffect(() => {\n doOperationRef.current = doOperation;\n }, [doOperation]);\n\n useEffect(() => {\n tRef.current = t;\n }, [t]);\n\n // Fetch resource and compute label\n useEffect(() => {\n // `operationPathKey` is null when the resource has no URL-bearing READ — no\n // path to fetch through, so skip the (optional) label fetch and let the\n // header fall back to its title / resourceId.\n if (!shouldFetchRecord || !resourceConfig || !operationPathKey) return;\n\n let cancelled = false;\n\n const fetchAndComputeLabel = async () => {\n setIsLoadingLabel(true);\n setResourceLabel(null);\n setResourceData(undefined);\n setLabelError(null);\n\n try {\n // Fetch the resource\n const resourceData = await doOperationRef.current(operationPathKey, {\n contextualParameters,\n parentResourcesRequirements: effectiveResourceContext.parentResourcesRequirements,\n });\n\n if (cancelled) return;\n\n if (resourceData && typeof resourceData === 'object' && !Array.isArray(resourceData)) {\n setResourceData(resourceData as Record<string, unknown>);\n }\n\n const label = FrontendResourceUtils.computeFrontendResourceLabel({\n resourceType,\n registry,\n currentObject: resourceData,\n objectContext: effectiveResourceContext,\n initiatorUserContext: undefined,\n t: tRef.current,\n });\n setResourceLabel(label);\n } catch (error) {\n if (cancelled) return;\n const errorInfo = extractErrorInfo(error);\n LoggerFrontendService.getLogger().error(\n '[ResourceLayoutPreset_Header_Default] Error fetching resource label:',\n { resourceType, operationPathKey, ...errorInfo, error },\n );\n // Rendered to the person (and as its tooltip): localized text, never the reference (#1160).\n setLabelError({ ...errorInfo, message: toUserFacingErrorMessage(error) });\n // On error, fall back to showing resourceId\n setResourceLabel(null);\n setResourceData(undefined);\n } finally {\n if (!cancelled) {\n setIsLoadingLabel(false);\n }\n }\n };\n\n fetchAndComputeLabel();\n\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- refs for functions; CONTENT keys (not object identities) for contextResourceIdentifiers / contextualParameters / parentResourcesRequirements so provider re-renders with unchanged content don't refire the fetch (audit I1). The closed-over objects are only stale when content is identical, which is exactly when re-running would be redundant.\n }, [shouldFetchRecord, operationPathKey, contextResourceIdentifiersKey, contextualParametersKey, parentResourcesRequirementsKey, hasResourceConfig, resourceType]);\n\n // Resolve title — an explicit override, else the OPERATION's own title\n // (`resources.<type>.operations.<op>.title`), which the labelling pipeline plans for every\n // operation. The framework never surfaces the generic `components.RESOURCES_LAYOUTS_HEADER.title`\n // (\"Resources Layouts\") as a resource title: that label describes the component, not the resource,\n // and several lists side by side would all read the same.\n //\n // An operation whose title is not generated yet shows that title's KEY (#1450). Until then\n // `tResourceOperation` answered '' and this chain fell through to the resource's HEADER title, a\n // fallback that could only ever fire for a resource with no labels at all — where it was a key too.\n const title = useMemo(() => {\n if (titleOverride) return titleOverride;\n return tResourceOperation(resourceType, operationId, 'title');\n }, [titleOverride, tResourceOperation, resourceType, operationId]);\n\n // Resolve description — prefer override, then resource header. No\n // component-level fallback: the generic \"Manage and organize your resource\n // layouts efficiently.\" is a component-scoped label, not a per-resource one,\n // and using it for the resource header description (a) leaks the same string\n // into every list section and (b) overrides the absence of a real\n // description that the labelling planner would otherwise be prompted to\n // fill. Returning `null` lets the header collapse cleanly until a real\n // description is authored.\n const description = useMemo(() => {\n if (descriptionOverride) return descriptionOverride;\n\n // OPTIONAL by decision, not by falsy check: a description is supplementary text, so its\n // absence collapses the header instead of rendering a key under a title that is fine.\n return resolveOptionalResourceHeaderDescription({ tResourceHeader, resourceType }) ?? null;\n }, [descriptionOverride, tResourceHeader, resourceType]);\n\n // Determine what to show in description\n // L-1: combine local in-flight flag with Tier-2 derived loading; both must\n // be quiet to commit a label render. `isInitialLoad` lets us suppress the\n // label on the very first fetch so we don't flash `#id` then real label.\n const displayLabel = useMemo(() => {\n if (shouldFetchLabel) {\n if (isLoadingLabel || headerLoading.isInitialLoad) {\n return null;\n }\n if (resourceLabel) {\n return resourceLabel;\n }\n // Fallback to resourceId if label fetch failed\n return resourceId ? `#${resourceId}` : null;\n }\n return null;\n }, [shouldFetchLabel, isLoadingLabel, headerLoading.isInitialLoad, resourceLabel, resourceId]);\n\n // Render resource icon — LG (24px) to match text-xl title. The operation may cede the glyph to\n // its header template (`HeaderIconPlacement.TEMPLATE_OWNED`): a template composing its own\n // record-linked icon must not sit beside the resource's — two glyphs naming one thing.\n const headerIconPlacement = (operation as { operationFrontendConfig?: { headerIconPlacement?: HeaderIconPlacement } })\n .operationFrontendConfig?.headerIconPlacement;\n const resourceIcon = useMemo(() => {\n if (headerIconPlacement === HeaderIconPlacement.TEMPLATE_OWNED) return null;\n return renderIcon(\n { category: IconCategory.RESOURCES, resourceType },\n { size: IconSize.LG }\n );\n }, [renderIcon, resourceType, headerIconPlacement]);\n\n // If displayLabel exists, show only icon + label, otherwise show title + description\n const hasDisplayLabel = !!displayLabel;\n // The enclosing section renders the heading for this region, so this header renders NO identity line —\n // neither the default title nor an authored template. Named once because two places must agree on it: the\n // early return below, and the missing-title diagnostic, which must not judge a commit that never rendered\n // the template (#1561).\n const hostOwnsHeading = hostProvidesHeading && !hasDisplayLabel;\n /*\n * A record's name is ON ITS WAY: the label is being fetched and has not landed. While this holds the\n * header RESERVES its band (a skeleton title line) instead of rendering nothing, at each of the three\n * places below that used to answer with an empty band — labels not ready, the host owning the heading,\n * and the title element itself. An empty band has no height, so the name's arrival pushed everything\n * beneath it down a line; a click whose press and release straddled that instant was dispatched to the\n * common ancestor and lost without a trace (see `ResourceHeaderContextValue.titlePending`).\n */\n const recordNamePending = shouldFetchLabel && !hasDisplayLabel && (isLoadingLabel || headerLoading.isInitialLoad);\n\n // ── Authored header template (`layout.header`) ────────────────────\n // The record's own schema carries the ui-behavior field decorators (via the\n // frontend schema bridge), so `<DisplayField name=\"status\">` inside the\n // template resolves exactly as it does in the `display` / `summary` flows.\n const headerSchema = resourceConfig?.mainSchema;\n const headerLabels = useMemo(\n () => ({ resourceContext: { resourceType, operationId: CoreResourceOperation.READ } }),\n [resourceType],\n );\n // Stable across renders: once any render mounted the title element, the\n // template has proven it participates in the title contract.\n const headerTitleMountTracker = useRef({ titleMounted: false }).current;\n const headerContextValue = useMemo(\n () => ({\n resourceType,\n // Same resolution the plain `<h1>` uses, so authoring a template does not\n // change WHICH string is the title — only where it sits.\n // Under a host heading the GENERIC title is a near-duplicate the header never shows, so while the\n // record's name is pending there is no stand-in: the title element reserves the line instead.\n title: hasDisplayLabel ? displayLabel : (hostProvidesHeading && recordNamePending ? null : title),\n titlePending: recordNamePending && (hostProvidesHeading || !title),\n titleMountTracker: headerTitleMountTracker,\n hostProvidesHeading,\n }),\n [resourceType, hasDisplayLabel, displayLabel, title, headerTitleMountTracker, hostProvidesHeading, recordNamePending],\n );\n\n // DEV DIAGNOSTIC — an authored header template that never places the title.\n // The header cedes its middle region the moment `layout.header` exists, so a\n // template without `<ResourceHeaderTitle />` renders a record page with no\n // name — silent, and exactly the failure the sibling summary diagnostic was\n // added for. Warn once per resource type; no-op in production builds.\n useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n /*\n * Judge only a commit in which the template could actually have rendered.\n *\n * This effect has no dependency array, so it runs on EVERY commit — including the first, where\n * `isReady` is false and the early return below (`if (!isReady)`) exits before the authored\n * header template is rendered at all. `ResourceHeaderTitle` therefore never mounted, never set\n * the tracker, and the diagnostic fired against a template that had not yet had its chance.\n *\n * The latch is what made that permanent rather than momentary: the warning is recorded once per\n * resource type, so the FALSE warning from the not-ready commit also suppressed the real check\n * forever after. Measured 2026-09-18 on `organizationEscalationContacts`, whose template does\n * render `<ResourceHeaderTitle />` and whose record page shows its title on screen while this\n * warned that it never renders one.\n */\n if (!isReady) return;\n // The second commit that never renders the template: a host section owns the heading, so the early\n // return below renders only the action cluster. Judging it flagged correct templates (Wonder Todos\n // `tasks`, embedded under its todo's related-list section) and the latch then silenced the real check.\n if (hostOwnsHeading) return;\n if (!headerTemplate || !headerSchema) return;\n if (headerTitleMountTracker.titleMounted || warnedMissingHeaderTitleResourceTypes.has(resourceType)) return;\n warnedMissingHeaderTitleResourceTypes.add(resourceType);\n LoggerFrontendService.getLogger().warn(\n `[ResourceLayout_Header] Resource \"${resourceType}\" authors a frontend \\`layout.header\\` template that never renders `\n + '<ResourceHeaderTitle />: the header cedes the identity line to an authored template, so this record page shows no name. '\n + 'Place <ResourceHeaderTitle /> in the template where the record name belongs.',\n );\n });\n\n if (!isReady) {\n // Labels not ready yet — the text band waits, but the action cluster was\n // historically a SIBLING that never waited on header i18n; keep that.\n if (recordNamePending) return <PendingRecordNameBand className={className} actions={actions} />;\n return actions ? <div className={cn('flex items-center justify-end gap-field', className)}>{actions}</div> : null;\n }\n\n // The enclosing section already renders a heading for this region (e.g. a\n // composite `<Section name=\"todoLists\">` titled \"To-Do Lists\"). Suppress our\n // GENERIC resource heading so we don't stack a near-duplicate (\"Todo Lists\")\n // under it — the host section owns the heading. A record-specific\n // displayLabel (a READ view's instance name) is data, not a duplicate\n // heading, so it is always shown.\n if (hostOwnsHeading) {\n // …unless that record name is on its way: its band is reserved, not absent.\n if (recordNamePending) return <PendingRecordNameBand className={className} actions={actions} />;\n return actions ? <div className={cn('flex items-center justify-end gap-field', className)}>{actions}</div> : null;\n }\n\n // Header geometry (2026-08-19 alignment pass): everything hangs off ONE left\n // rail. The breadcrumb is a full-width row ABOVE the title row, so it starts\n // at the same x as the icon below it instead of being indented past it; the\n // icon lives INSIDE the title row (items-center against the h1 alone), so a\n // description can never pull the icon off the resource-name line.\n return (\n <div className={cn(className || 'flex-1')}>\n {/* Parent-chain trail — only on standalone page headers. The breadcrumb\n self-hides when the context carries no parent requirements, so\n scope-level pages (`…/organizations/:org/todos`) render nothing here\n while parent-routed pages (`…/todos/:todoId/tasks/:id`) get the\n clickable ancestor chain. Embedded surfaces (hostProvidesHeading —\n e.g. a related-list tab inside the parent's READ page) skip it: their\n parent IS the page they are rendered on. */}\n {!hostProvidesHeading && (\n <ResourceLayout_Breadcrumb\n resourceContext={effectiveResourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n />\n )}\n\n <div className=\"flex items-center gap-field\">\n <ApplicationLevel_NavigationBack\n host={NavigationBackHost.SURFACE}\n navigationZone={navigationZone}\n />\n\n {resourceIcon && (\n <div className=\"shrink-0\">\n {resourceIcon}\n </div>\n )}\n\n {headerTemplate && headerSchema ? (\n /* The resource composes the identity line itself — see `layout.header`.\n `flex-1 min-w-0` keeps the composed row claiming the band between the\n icon and the actions, and lets a long name truncate rather than push\n the action cluster off the row. */\n <div className=\"min-w-0 flex-1\">\n <ResourceHeaderContextProvider value={headerContextValue}>\n <AutomaticDisplayer\n schema={headerSchema}\n data={resourceData}\n labels={headerLabels}\n disableInlineEdit\n layoutTemplate={headerTemplate}\n defaultDisplayChromeMode={DisplayChromeMode.INLINE}\n isLoading={!resourceData}\n />\n </ResourceHeaderContextProvider>\n </div>\n ) : (\n // A PAGE title is the level-1 heading on BOTH paths: `ResourceHeaderTitle` (the templated path) became an\n // `h1` in #533, and this default path stayed `h2`, so a page's title level depended on whether its resource\n // authored a header template (#1101). Under a host section that owns the heading (an embedded READ showing\n // its record name) this is not the page title, so it sits one level below the host's heading.\n hostProvidesHeading ? (\n <h2 className=\"min-w-0 flex-1 text-xl font-semibold text-foreground\">\n {hasDisplayLabel ? displayLabel : title}\n </h2>\n ) : (\n <h1 className=\"min-w-0 flex-1 text-xl font-semibold text-foreground\">\n {hasDisplayLabel ? displayLabel : title}\n </h1>\n )\n )}\n\n {actions && <div className=\"flex shrink-0 items-center\">{actions}</div>}\n </div>\n\n {!hasDisplayLabel && description && (\n <p className=\"mt-item-xs text-sm text-muted-foreground\">{description}</p>\n )}\n {/* E-3: subtle inline warning when label fetch fails (header still renders, fallback `#id` is shown) */}\n {labelError && (\n <p\n className=\"mt-item-xs text-xs text-destructive/80 inline-flex items-center gap-item-xs\"\n role=\"alert\"\n aria-live=\"polite\"\n title={labelError.message}\n >\n {renderIcon(StandardIconReference.WARNING, { size: IconSize.XS })}\n <span>{labelError.message}</span>\n </p>\n )}\n </div>\n );\n};\n\nexport function ResourceLayout_Header({\n preset = CorePresetNames.DEFAULT,\n ...props\n}: ResourceLayoutPreset_Header_DefaultProps & ComponentPresetProps): React.JSX.Element {\n const Component = createComponentResolver<ResourceLayoutPreset_Header_DefaultProps>(FrontendComponentType.RESOURCES_LAYOUTS_HEADER, 'ResourceLayout_Header')(preset);\n return <Component {...props} />;\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"ResourceLayout_Header.js","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_Header.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo, useEffect, useState, useRef } from 'react';\n\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\nimport { Skeleton } from '~wildo-frontend-lib/components/feedback/skeleton';\nimport {\n resolveOptionalResourceHeaderDescription,\n} from '~wildo-frontend-lib/core/i18n/component-label-resolution.utils';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { useIconRegistry } from '~wildo-frontend-lib/core/icons/useIconRegistry';\nimport { useOptionalResourceOperationViewContext } from '~wildo-frontend-lib/core/resources/ResourceOperationViewContext';\nimport { FrontendResourceUtils, frontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { resolveEffectiveCoreOperationFromOperation, resolveSurfaceTitleOperationIdentifier } from '~wildo-frontend-lib/core/resources/operation-semantics.frontend.utils';\nimport { HeaderIconPlacement } from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport {\n resolveCanonicalRMMReadOperation,\n} from '~wildo-frontend-lib/core/resources/rmm/canonical-read.frontend.utils';\n\nimport { ApplicationLevel_NavigationBack, NavigationBackHost } from '~wildo-frontend-lib/components/navigation/app-level/ApplicationLevel_NavigationBack';\nimport { ResourceLayout_Breadcrumb } from './ResourceLayout_Breadcrumb';\nimport { AutomaticDisplayer } from '~wildo-frontend-lib/components/data-display/AutomaticDisplayer';\nimport type { ParentReferenceConfig } from '~wildo-frontend-lib/components/data-display/automatic-displayer.utils';\nimport { ResourceHeaderContextProvider } from './skeleton/ResourceHeaderTitle';\nimport { DisplayChromeMode } from '@wildo-ai/zod-decorators';\nimport {\n CoreResourceOperation,\n} from '@wildo-ai/saas-models';\nimport { IconCategory, IconSize, StandardIconReference } from '~wildo-frontend-lib/core/icons/icon-registry.frontend.schemas';\nimport { extractErrorInfo, type DisplayableError } from '~wildo-frontend-lib/core/errors/errors.frontend.schemas';\nimport { useUserFacingErrorMessage } from '~wildo-frontend-lib/core/errors/useUserFacingErrorMessage';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { useComponentLoading } from '~wildo-frontend-lib/core/loading/useComponentLoading';\nimport { buildResourceLoadingScope } from '~wildo-frontend-lib/core/loading/loading-scope.frontend.utils';\nimport { useSectionHostProvidesHeading } from './skeleton/SectionHostHeadingContext';\n\nimport { BaseResourcesLayoutProps } from './component-props.resources-layout.frontend.schemas'\n\nimport { ComponentPresetProps } from '~wildo-frontend-lib/core/components-registry/component-registry.frontend.schemas';\nimport { createComponentResolver } from '~wildo-frontend-lib/core/components-registry/component-resolver.frontend.helper';\nimport { CorePresetNames, FrontendComponentType } from '@wildo-ai/presets-components-models';\n\n/**\n * The header's band while a record's name is on its way: one skeleton line where the name will sit, with\n * the action cluster where it will stay. Same outer box and row as the real band below, so the swap moves\n * nothing beneath the header. `h-7` is `text-xl`'s own line box.\n */\nfunction PendingRecordNameBand({ className, actions }: { className?: string; actions?: React.ReactNode }): React.JSX.Element {\n return (\n <div className={cn(className || 'flex-1')} data-resource-header-pending=\"true\">\n {/* Same wrapping row as the real band (see its comment), so a narrow pane lays the two out alike. */}\n <div className=\"flex flex-wrap items-center gap-field\">\n <div className=\"min-w-0 flex-1 basis-60\">\n <Skeleton className=\"h-7 w-48 max-w-full\" aria-hidden=\"true\" />\n </div>\n {actions && <div className=\"ml-auto flex shrink-0 items-center\">{actions}</div>}\n </div>\n </div>\n );\n}\n\n// --- Contract ---\nexport interface ResourceLayoutPreset_Header_DefaultProps extends BaseResourcesLayoutProps {\n title?: string;\n description?: string;\n /**\n * Extra classes for the header root.\n */\n className?: string;\n /**\n * Right-aligned action cluster rendered INSIDE the title row (after the\n * flex-1 title), so actions are vertically centered on the RESOURCE NAME —\n * never on the breadcrumb line above it. Hosts pass their operation bar\n * here instead of laying it beside the header in their own row; owning the\n * band in one place is what makes the alignment un-driftable.\n */\n actions?: React.ReactNode;\n /**\n * The parent-reference presentation for THIS record, as the READ layout resolved it — the parent's\n * type and id, the declared `ParentDisplay`, and the controller-managed link back. Forwarded to the\n * header template so a parent FK PLACED there renders the way the resource declared it, exactly as\n * it would in the body.\n *\n * A parent reference is not an element the framework adds: it is how the parent FK field renders,\n * wherever a template places it. Wonder Todos declares a todo's list as a linked BADGE and puts the\n * list in the header (the chip \"that links back\"), and the header never received this config, so\n * the declaration had nothing to act on and only the breadcrumb linked to the list (#1945).\n */\n parentReferenceConfig?: ParentReferenceConfig;\n}\n\n/**\n * Resource types already warned about a title-less authored header template —\n * module-level so repeated mounts produce ONE warning, not one per render.\n */\nconst warnedMissingHeaderTitleResourceTypes = new Set<string>();\n\n/**\n * Centralized resource header component.\n * Displays title and description for resource operations with consistent styling.\n */\nexport const ResourceLayoutPreset_Header_Default: React.FC<ResourceLayoutPreset_Header_DefaultProps> = ({\n resourceContext,\n navigationZone,\n navigationInitiator,\n title: titleOverride,\n description: descriptionOverride,\n className,\n actions,\n parentReferenceConfig,\n}) => {\n const hostProvidesHeading = useSectionHostProvidesHeading();\n const ambientOperationViewContext = useOptionalResourceOperationViewContext();\n // The operation-view provider describes the ROUTED host operation, and an\n // EMBEDDED child surface renders inside it: a nested relationship section\n // mounts the child's own list/read with an explicit `resourceContext` while\n // the parent's provider is still overhead. Trusting the ambient value there\n // makes the child's header announce the PARENT's identity — the todo-list\n // page rendering \"Summary probe — Home · Active\" a second time INSIDE its own\n // \"Todos\" section. Explicit context therefore wins whenever the two describe\n // different resources; the ambient value is only adopted when it is genuinely\n // about the same resource this header is rendering (the routed host case it\n // was introduced for).\n const operationViewContext = ambientOperationViewContext?.resourceContext?.resourceType === resourceContext.resourceType\n ? ambientOperationViewContext\n : undefined;\n const effectiveResourceContext = operationViewContext?.resourceContext ?? resourceContext;\n const { resourceType, operation, contextResourceIdentifiers } = effectiveResourceContext;\n const { tResourceHeader, tResourceOperation, t, formatDate, formatDateTime, isReady } = useI18n({\n component: FrontendComponentType.RESOURCES_LAYOUTS_HEADER,\n resource: resourceType,\n });\n // Stable identity, so the label-fetch effect may call it without listing it.\n const toUserFacingErrorMessage = useUserFacingErrorMessage();\n const { registry, doOperation } = useResourceRegistry();\n const { renderIcon } = useIconRegistry();\n const operationId = String(operation.operationIdentifier);\n const resourceId = frontendResourceUtils.getPrimaryResourceIdentifier(effectiveResourceContext);\n\n // Get resource configuration and check for getFrontendResourceLabel\n const computedResourceConfig = useMemo(() => {\n return registry.resourceConfigurations[resourceType];\n }, [registry, resourceType]);\n const resourceConfig = operationViewContext?.resourceConfig ?? computedResourceConfig;\n\n const getFrontendResourceLabel = resourceConfig?.frontendConfiguration?.getFrontendResourceLabel;\n // A record label may replace the operation title ONLY on a surface that\n // targets one persisted row (effective READ / UPDATE / DELETE semantics).\n // On collection surfaces (LIST/SEARCH/…) and CREATE, an own-type id in\n // `contextResourceIdentifiers` is AMBIENT SCOPE — e.g. the quick-switcher's\n // selected record — not \"the current record\": without this gate, selecting a\n // list in the switcher renamed the whole todo-lists LISTING to that record's\n // label (2026-08-19).\n const effectiveCoreOperation = resolveEffectiveCoreOperationFromOperation(operation);\n const isRowScopedSurface =\n effectiveCoreOperation === CoreResourceOperation.READ\n || effectiveCoreOperation === CoreResourceOperation.UPDATE\n || effectiveCoreOperation === CoreResourceOperation.DELETE;\n // An authored `layout.header` template composes the identity line from the\n // RECORD, so it needs the row fetched even when the resource declares no\n // `getFrontendResourceLabel` (the template may show only badges and rely on\n // the operation-title fallback for the name).\n //\n // It is the READ page's identity line and nothing else. An UPDATE surface renders the same header\n // band above a FORM, and every state badge a header template places (status, priority, the parent\n // chip) is a field that form is editing: measured on Wonder Todos, the task edit dialog showed\n // \"B — OVER estimate · Pending · High · <parent todo>\" directly above inputs holding those same four\n // values, so each fact appeared twice and the static copy went stale the moment a control moved.\n // A DELETE confirmation needs to know WHICH record, which the name answers; its state is not the\n // question being asked. So on every non-READ surface the header falls back to the record name.\n const headerTemplate = effectiveCoreOperation === CoreResourceOperation.READ\n ? resourceConfig?.frontendConfiguration?.layout?.header\n : undefined;\n const shouldFetchLabel = !!getFrontendResourceLabel && !!resourceId && isRowScopedSurface;\n const shouldFetchRecord = (!!getFrontendResourceLabel || !!headerTemplate) && !!resourceId && isRowScopedSurface;\n // Boolean (not object identity) — the label-fetch effect only needs \"is a\n // config present\", and the context-provided config object may churn identity.\n const hasResourceConfig = !!resourceConfig;\n\n // State for resource label\n /** The fetched record — feeds an authored `layout.header` template's fields. */\n const [resourceData, setResourceData] = useState<Record<string, unknown> | undefined>(undefined);\n const [isLoadingLabel, setIsLoadingLabel] = useState(false);\n // E-3: surface non-fatal label fetch errors (graceful degradation: title still shows)\n const [labelError, setLabelError] = useState<DisplayableError | null>(null);\n\n // Build a stable key from contextResourceIdentifiers for memoization\n const contextResourceIdentifiersKey = useMemo(() => {\n return FrontendResourceUtils.buildContextResourceIdentifiersKey(contextResourceIdentifiers);\n }, [contextResourceIdentifiers]);\n\n // Build contextual parameters for API calls\n const computedContextualParameters = useMemo(() => {\n return FrontendResourceUtils.buildContextualParameters(contextResourceIdentifiers, registry);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- using stable key instead of object reference\n }, [contextResourceIdentifiersKey, registry]);\n const contextualParameters = operationViewContext?.contextualParameters ?? computedContextualParameters;\n\n // Content-stable keys for the label-fetch effect below (audit I1). The\n // provider-supplied `contextualParameters` / `effectiveResourceContext`\n // objects are commonly re-created on every provider render, so depending on\n // their IDENTITY re-fires the fetch effect — and its GET — on unrelated\n // re-renders. Keying by content mirrors `contextResourceIdentifiersKey`.\n const contextualParametersKey = useMemo(() => {\n return Object.entries(contextualParameters)\n .map(([key, value]) => `${key}:${value}`)\n .sort()\n .join('|');\n }, [contextualParameters]);\n const parentResourcesRequirementsKey = useMemo(\n () => JSON.stringify(effectiveResourceContext.parentResourcesRequirements ?? null),\n [effectiveResourceContext.parentResourcesRequirements],\n );\n\n const readOperation = useMemo(() => {\n if (operation.operationIdentifier === CoreResourceOperation.READ) {\n return operation;\n }\n\n return operationViewContext?.resolvePreferredOperation(CoreResourceOperation.READ, {\n requireAddressable: true,\n })\n ?? resolveCanonicalRMMReadOperation(resourceType, registry, {\n hasResourceId: Boolean(resourceId),\n contextResourceIdentifiers,\n contextualParameters,\n });\n }, [operation, operationViewContext, resourceType, registry, resourceId, contextResourceIdentifiers, contextualParameters]);\n\n // Build operation path key for the strongest available read-like operation.\n // Opportunistic: this key is only consumed by the label-fetch effect below\n // (gated on `shouldFetchLabel`). A LIST-only surface with no URL-bearing single\n // READ (e.g. SCIM tokens) legitimately has none — use the non-throwing variant\n // so the header still renders instead of crashing the whole surface.\n const operationPathKey = useMemo(() => {\n return FrontendResourceUtils.tryBuildForeignKeyReadOperationPath(\n resourceType,\n registry,\n readOperation,\n );\n }, [resourceType, registry, readOperation]);\n\n // L-1: derive isInitialLoad / isRefreshing from LoadingContext (Tier-2).\n // The label fetch goes through doOperation which fires LOADING_RESOURCE_*\n // events for (resourceType, READ). We use this to gate the label render so\n // a stale label doesn't flash during a re-fetch.\n const headerLoading = useComponentLoading(\n buildResourceLoadingScope({\n resourceType,\n operation: readOperation\n ? ((readOperation as { operationIdentifier?: string }).operationIdentifier ?? CoreResourceOperation.READ)\n : CoreResourceOperation.READ,\n discriminator: resourceId ?? undefined,\n }),\n );\n\n // A ref keeps the fetch effect from re-running when `doOperation` changes identity.\n const doOperationRef = useRef(doOperation);\n\n useEffect(() => {\n doOperationRef.current = doOperation;\n }, [doOperation]);\n\n // Fetch resource and compute label\n useEffect(() => {\n // `operationPathKey` is null when the resource has no URL-bearing READ — no\n // path to fetch through, so skip the (optional) label fetch and let the\n // header fall back to its title / resourceId.\n if (!shouldFetchRecord || !resourceConfig || !operationPathKey) return;\n\n let cancelled = false;\n\n const fetchAndComputeLabel = async () => {\n setIsLoadingLabel(true);\n setResourceData(undefined);\n setLabelError(null);\n\n try {\n // Fetch the resource\n const resourceData = await doOperationRef.current(operationPathKey, {\n contextualParameters,\n parentResourcesRequirements: effectiveResourceContext.parentResourcesRequirements,\n });\n\n if (cancelled) return;\n\n if (resourceData && typeof resourceData === 'object' && !Array.isArray(resourceData)) {\n setResourceData(resourceData as Record<string, unknown>);\n }\n } catch (error) {\n if (cancelled) return;\n const errorInfo = extractErrorInfo(error);\n LoggerFrontendService.getLogger().error(\n '[ResourceLayoutPreset_Header_Default] Error fetching resource label:',\n { resourceType, operationPathKey, ...errorInfo, error },\n );\n // Rendered to the person (and as its tooltip): localized text, never the reference (#1160).\n setLabelError({ ...errorInfo, message: toUserFacingErrorMessage(error) });\n // On error, fall back to showing resourceId\n setResourceData(undefined);\n } finally {\n if (!cancelled) {\n setIsLoadingLabel(false);\n }\n }\n };\n\n fetchAndComputeLabel();\n\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- refs for functions; CONTENT keys (not object identities) for contextResourceIdentifiers / contextualParameters / parentResourcesRequirements so provider re-renders with unchanged content don't refire the fetch (audit I1). The closed-over objects are only stale when content is identical, which is exactly when re-running would be redundant.\n }, [shouldFetchRecord, operationPathKey, contextResourceIdentifiersKey, contextualParametersKey, parentResourcesRequirementsKey, hasResourceConfig, resourceType]);\n\n /*\n * The record's name is DERIVED from the fetched row, not stored at fetch time: a name built with `t` or a\n * date formatter must follow the viewer's language and regional preferences when they change, without\n * fetching the row again. It used to be computed once inside the fetch, through refs, and kept the\n * words and date format of the moment the row arrived.\n */\n const resourceLabel = useMemo(() => {\n if (!resourceData) return null;\n return FrontendResourceUtils.computeFrontendResourceLabel({\n resourceType,\n registry,\n currentObject: resourceData,\n objectContext: effectiveResourceContext,\n initiatorUserContext: undefined,\n t,\n formatDate,\n formatDateTime,\n });\n }, [resourceData, resourceType, registry, effectiveResourceContext, t, formatDate, formatDateTime]);\n\n // Resolve title — an explicit override, else the OPERATION's own title\n // (`resources.<type>.operations.<op>.title`), which the labelling pipeline plans for every\n // operation. The framework never surfaces the generic `components.RESOURCES_LAYOUTS_HEADER.title`\n // (\"Resources Layouts\") as a resource title: that label describes the component, not the resource,\n // and several lists side by side would all read the same.\n //\n // An operation whose title is not generated yet shows that title's KEY (#1450). Until then\n // `tResourceOperation` answered '' and this chain fell through to the resource's HEADER title, a\n // fallback that could only ever fire for a resource with no labels at all — where it was a key too.\n //\n // Which operation's title names this surface is decided once, for the header and the overlay title alike\n // (`resolveSurfaceTitleOperationIdentifier`): the core edit page takes READ's heading, a named action keeps\n // its own. A record label, where the resource declares one, still replaces either (see `displayLabel`).\n const titleOperationId = resolveSurfaceTitleOperationIdentifier(operation.operationIdentifier, resourceConfig?.operations);\n const title = useMemo(() => {\n if (titleOverride) return titleOverride;\n return tResourceOperation(resourceType, titleOperationId, 'title');\n }, [titleOverride, tResourceOperation, resourceType, titleOperationId]);\n\n // Resolve description — prefer override, then resource header. No\n // component-level fallback: the generic \"Manage and organize your resource\n // layouts efficiently.\" is a component-scoped label, not a per-resource one,\n // and using it for the resource header description (a) leaks the same string\n // into every list section and (b) overrides the absence of a real\n // description that the labelling planner would otherwise be prompted to\n // fill. Returning `null` lets the header collapse cleanly until a real\n // description is authored.\n //\n // The resource's description describes the COLLECTION, so it is shown on the collection surface and nowhere\n // else. A create or edit dialog opens over that very list, and printed the same sentence under its own title,\n // once on the page and once in the dialog (measured on every Wonder Todos create/edit dialog); a record's\n // page is about the record. An explicit `description` from the host is still shown wherever it is passed.\n const isCollectionSurface =\n effectiveCoreOperation === CoreResourceOperation.LIST || effectiveCoreOperation === CoreResourceOperation.SEARCH;\n const description = useMemo(() => {\n if (descriptionOverride) return descriptionOverride;\n if (!isCollectionSurface) return null;\n\n // OPTIONAL by decision, not by falsy check: a description is supplementary text, so its\n // absence collapses the header instead of rendering a key under a title that is fine.\n return resolveOptionalResourceHeaderDescription({ tResourceHeader, resourceType }) ?? null;\n }, [descriptionOverride, isCollectionSurface, tResourceHeader, resourceType]);\n\n // Determine what to show in description\n // L-1: combine local in-flight flag with Tier-2 derived loading; both must\n // be quiet to commit a label render. `isInitialLoad` lets us suppress the\n // label on the very first fetch so we don't flash `#id` then real label.\n const displayLabel = useMemo(() => {\n if (shouldFetchLabel) {\n if (isLoadingLabel || headerLoading.isInitialLoad) {\n return null;\n }\n if (resourceLabel) {\n return resourceLabel;\n }\n // Fallback to resourceId if label fetch failed\n return resourceId ? `#${resourceId}` : null;\n }\n return null;\n }, [shouldFetchLabel, isLoadingLabel, headerLoading.isInitialLoad, resourceLabel, resourceId]);\n\n // Render resource icon — LG (24px) to match text-xl title. The operation may cede the glyph to\n // its header template (`HeaderIconPlacement.TEMPLATE_OWNED`): a template composing its own\n // record-linked icon must not sit beside the resource's — two glyphs naming one thing.\n const headerIconPlacement = (operation as { operationFrontendConfig?: { headerIconPlacement?: HeaderIconPlacement } })\n .operationFrontendConfig?.headerIconPlacement;\n const resourceIcon = useMemo(() => {\n if (headerIconPlacement === HeaderIconPlacement.TEMPLATE_OWNED) return null;\n return renderIcon(\n { category: IconCategory.RESOURCES, resourceType },\n { size: IconSize.LG }\n );\n }, [renderIcon, resourceType, headerIconPlacement]);\n\n // If displayLabel exists, show only icon + label, otherwise show title + description\n const hasDisplayLabel = !!displayLabel;\n // The enclosing section renders the heading for this region, so this header renders NO identity line —\n // neither the default title nor an authored template. Named once because two places must agree on it: the\n // early return below, and the missing-title diagnostic, which must not judge a commit that never rendered\n // the template (#1561).\n const hostOwnsHeading = hostProvidesHeading && !hasDisplayLabel;\n /*\n * A record's name is ON ITS WAY: the label is being fetched and has not landed. While this holds the\n * header RESERVES its band (a skeleton title line) instead of rendering nothing, at each of the three\n * places below that used to answer with an empty band — labels not ready, the host owning the heading,\n * and the title element itself. An empty band has no height, so the name's arrival pushed everything\n * beneath it down a line; a click whose press and release straddled that instant was dispatched to the\n * common ancestor and lost without a trace (see `ResourceHeaderContextValue.titlePending`).\n */\n const recordNamePending = shouldFetchLabel && !hasDisplayLabel && (isLoadingLabel || headerLoading.isInitialLoad);\n\n // ── Authored header template (`layout.header`) ────────────────────\n // The record's own schema carries the ui-behavior field decorators (via the\n // frontend schema bridge), so `<DisplayField name=\"status\">` inside the\n // template resolves exactly as it does in the `display` / `summary` flows.\n const headerSchema = resourceConfig?.mainSchema;\n const headerLabels = useMemo(\n () => ({ resourceContext: { resourceType, operationId: CoreResourceOperation.READ } }),\n [resourceType],\n );\n // Stable across renders: once any render mounted the title element, the\n // template has proven it participates in the title contract.\n const headerTitleMountTracker = useRef({ titleMounted: false }).current;\n const headerContextValue = useMemo(\n () => ({\n resourceType,\n // Same resolution the plain `<h1>` uses, so authoring a template does not\n // change WHICH string is the title — only where it sits.\n // Under a host heading the GENERIC title is a near-duplicate the header never shows, so while the\n // record's name is pending there is no stand-in: the title element reserves the line instead.\n title: hasDisplayLabel ? displayLabel : (hostProvidesHeading && recordNamePending ? null : title),\n titlePending: recordNamePending && (hostProvidesHeading || !title),\n titleMountTracker: headerTitleMountTracker,\n hostProvidesHeading,\n }),\n [resourceType, hasDisplayLabel, displayLabel, title, headerTitleMountTracker, hostProvidesHeading, recordNamePending],\n );\n\n // DEV DIAGNOSTIC — an authored header template that never places the title.\n // The header cedes its middle region the moment `layout.header` exists, so a\n // template without `<ResourceHeaderTitle />` renders a record page with no\n // name — silent, and exactly the failure the sibling summary diagnostic was\n // added for. Warn once per resource type; no-op in production builds.\n useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n /*\n * Judge only a commit in which the template could actually have rendered.\n *\n * This effect has no dependency array, so it runs on EVERY commit — including the first, where\n * `isReady` is false and the early return below (`if (!isReady)`) exits before the authored\n * header template is rendered at all. `ResourceHeaderTitle` therefore never mounted, never set\n * the tracker, and the diagnostic fired against a template that had not yet had its chance.\n *\n * The latch is what made that permanent rather than momentary: the warning is recorded once per\n * resource type, so the FALSE warning from the not-ready commit also suppressed the real check\n * forever after. Measured 2026-09-18 on `organizationEscalationContacts`, whose template does\n * render `<ResourceHeaderTitle />` and whose record page shows its title on screen while this\n * warned that it never renders one.\n */\n if (!isReady) return;\n // The second commit that never renders the template: a host section owns the heading, so the early\n // return below renders only the action cluster. Judging it flagged correct templates (Wonder Todos\n // `tasks`, embedded under its todo's related-list section) and the latch then silenced the real check.\n if (hostOwnsHeading) return;\n if (!headerTemplate || !headerSchema) return;\n if (headerTitleMountTracker.titleMounted || warnedMissingHeaderTitleResourceTypes.has(resourceType)) return;\n warnedMissingHeaderTitleResourceTypes.add(resourceType);\n LoggerFrontendService.getLogger().warn(\n `[ResourceLayout_Header] Resource \"${resourceType}\" authors a frontend \\`layout.header\\` template that never renders `\n + '<ResourceHeaderTitle />: the header cedes the identity line to an authored template, so this record page shows no name. '\n + 'Place <ResourceHeaderTitle /> in the template where the record name belongs.',\n );\n });\n\n if (!isReady) {\n // Labels not ready yet — the text band waits, but the action cluster was\n // historically a SIBLING that never waited on header i18n; keep that.\n if (recordNamePending) return <PendingRecordNameBand className={className} actions={actions} />;\n return actions ? <div className={cn('flex items-center justify-end gap-field', className)}>{actions}</div> : null;\n }\n\n // The enclosing section already renders a heading for this region (e.g. a\n // composite `<Section name=\"todoLists\">` titled \"To-Do Lists\"). Suppress our\n // GENERIC resource heading so we don't stack a near-duplicate (\"Todo Lists\")\n // under it — the host section owns the heading. A record-specific\n // displayLabel (a READ view's instance name) is data, not a duplicate\n // heading, so it is always shown.\n if (hostOwnsHeading) {\n // …unless that record name is on its way: its band is reserved, not absent.\n if (recordNamePending) return <PendingRecordNameBand className={className} actions={actions} />;\n return actions ? <div className={cn('flex items-center justify-end gap-field', className)}>{actions}</div> : null;\n }\n\n // Header geometry (2026-08-19 alignment pass): everything hangs off ONE left\n // rail. The breadcrumb is a full-width row ABOVE the title row, so it starts\n // at the same x as the icon below it instead of being indented past it; the\n // icon lives INSIDE the title row (items-center against the h1 alone), so a\n // description can never pull the icon off the resource-name line.\n return (\n <div className={cn(className || 'flex-1')}>\n {/* Parent-chain trail — only on standalone page headers. The breadcrumb\n self-hides when the context carries no parent requirements, so\n scope-level pages (`…/organizations/:org/todos`) render nothing here\n while parent-routed pages (`…/todos/:todoId/tasks/:id`) get the\n clickable ancestor chain. Embedded surfaces (hostProvidesHeading —\n e.g. a related-list tab inside the parent's READ page) skip it: their\n parent IS the page they are rendered on. */}\n {!hostProvidesHeading && (\n <ResourceLayout_Breadcrumb\n resourceContext={effectiveResourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n />\n )}\n\n {/*\n The row WRAPS, and the title claims a comfortable minimum (`basis-60`, 15rem) before it lets the\n action cluster sit beside it. Without that the actions — `shrink-0`, often five or six icon\n buttons plus a view launcher — kept their full width and the title shrank to nothing: measured\n on Wonder Todos, a todo opened in the split pane read \"Worker ...\" beside a full action bar.\n Now a narrow pane gives the title its line and moves the actions to the next, aligned to the\n end where they sit on a wide page. On a wide page nothing changes: the basis fits and the row\n never wraps.\n */}\n <div className=\"flex flex-wrap items-center gap-field\">\n <ApplicationLevel_NavigationBack\n host={NavigationBackHost.SURFACE}\n navigationZone={navigationZone}\n />\n\n {resourceIcon && (\n <div className=\"shrink-0\">\n {resourceIcon}\n </div>\n )}\n\n {headerTemplate && headerSchema ? (\n /* The resource composes the identity line itself — see `layout.header`.\n `flex-1 min-w-0` keeps the composed row claiming the band between the\n icon and the actions, and lets a long name truncate rather than push\n the action cluster off the row. */\n <div className=\"min-w-0 flex-1 basis-60\">\n <ResourceHeaderContextProvider value={headerContextValue}>\n {/*\n The record's context, handed to the template exactly as the READ body hands it. Without it\n the display context was empty, so every reference in a header template lost its route and\n rendered as plain text: Wonder Todos' task header had no way to its todo (#1942). The\n parent-reference presentation travels too, so a parent FK placed here renders as declared\n (#1945) — which means `ParentDisplay.NONE` hides it here as it would in the body.\n */}\n <AutomaticDisplayer\n schema={headerSchema}\n data={resourceData}\n labels={headerLabels}\n resourceType={resourceType}\n resourceId={resourceId ? String(resourceId) : undefined}\n contextualParameters={contextualParameters}\n contextResourceIdentifiers={contextResourceIdentifiers}\n parentResourcesRequirements={effectiveResourceContext.parentResourcesRequirements}\n navigationZone={navigationZone}\n parentReferenceConfig={parentReferenceConfig}\n disableInlineEdit\n layoutTemplate={headerTemplate}\n defaultDisplayChromeMode={DisplayChromeMode.INLINE}\n isLoading={!resourceData}\n />\n </ResourceHeaderContextProvider>\n </div>\n ) : (\n // A PAGE title is the level-1 heading on BOTH paths: `ResourceHeaderTitle` (the templated path) became an\n // `h1` in #533, and this default path stayed `h2`, so a page's title level depended on whether its resource\n // authored a header template (#1101). Under a host section that owns the heading (an embedded READ showing\n // its record name) this is not the page title, so it sits one level below the host's heading.\n hostProvidesHeading ? (\n <h2 className=\"min-w-0 flex-1 basis-60 text-xl font-semibold text-foreground\">\n {hasDisplayLabel ? displayLabel : title}\n </h2>\n ) : (\n <h1 className=\"min-w-0 flex-1 basis-60 text-xl font-semibold text-foreground\">\n {hasDisplayLabel ? displayLabel : title}\n </h1>\n )\n )}\n\n {actions && <div className=\"ml-auto flex shrink-0 items-center\">{actions}</div>}\n </div>\n\n {!hasDisplayLabel && description && (\n <p className=\"mt-item-xs text-sm text-muted-foreground\">{description}</p>\n )}\n {/* E-3: subtle inline warning when label fetch fails (header still renders, fallback `#id` is shown) */}\n {labelError && (\n <p\n className=\"mt-item-xs text-xs text-destructive/80 inline-flex items-center gap-item-xs\"\n role=\"alert\"\n aria-live=\"polite\"\n title={labelError.message}\n >\n {renderIcon(StandardIconReference.WARNING, { size: IconSize.XS })}\n <span>{labelError.message}</span>\n </p>\n )}\n </div>\n );\n};\n\nexport function ResourceLayout_Header({\n preset = CorePresetNames.DEFAULT,\n ...props\n}: ResourceLayoutPreset_Header_DefaultProps & ComponentPresetProps): React.JSX.Element {\n const Component = createComponentResolver<ResourceLayoutPreset_Header_DefaultProps>(FrontendComponentType.RESOURCES_LAYOUTS_HEADER, 'ResourceLayout_Header')(preset);\n return <Component {...props} />;\n}\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceLayout_List.d.ts","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_List.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAajF,OAAO,EAOL,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,qBAAqB,EAMtB,MAAM,+DAA+D,CAAC;
|
|
1
|
+
{"version":3,"file":"ResourceLayout_List.d.ts","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_List.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAajF,OAAO,EAOL,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,qBAAqB,EAMtB,MAAM,+DAA+D,CAAC;AAoCvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kFAAkF,CAAA;AAOvH,OAAO,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAA;AAI9F,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AAI3G,MAAM,WAAW,sCAAuC,SAAQ,wBAAwB;IACtF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,kBAAkB,CAAC,EAAE,4BAA4B,CAAC;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAWD,eAAO,MAAM,iCAAiC,GAAI,oIAQ/C,sCAAsC,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IA4sC/D,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,sCAAsC,GAAG,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAyB1I"}
|
|
@@ -25,7 +25,8 @@ import { extractErrorInfo } from '../../core/errors/errors.frontend.schemas.js';
|
|
|
25
25
|
import { useUserFacingErrorMessage } from '../../core/errors/useUserFacingErrorMessage.js';
|
|
26
26
|
import { useUI } from '../../core/ui/useUI.js';
|
|
27
27
|
import { UIBehavior, InteractiveVariant } from '@wildo-ai/presets-components-models';
|
|
28
|
-
import { ResourceEmptyState } from '../../components/feedback/resource-empty-state.js';
|
|
28
|
+
import { ResourceEmptyState, useResourceEmptyStateOffersPrimaryAction } from '../../components/feedback/resource-empty-state.js';
|
|
29
|
+
import { isCollectionNarrowed, toolbarOffersCreate } from './collection-create-placement.utils.js';
|
|
29
30
|
import { useInlineSearch } from '../../components/resources/useInlineSearch.js';
|
|
30
31
|
import { ResourceCollectionToolbar } from '../../components/resources/ResourceCollectionToolbar.js';
|
|
31
32
|
import { ResourceCollectionBody_Table } from '../../components/resources/ResourceCollectionBody_Table.js';
|
|
@@ -82,6 +83,7 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
82
83
|
// into the standard filter state, the grouping is applied to the fetched page).
|
|
83
84
|
const quickFilterFieldName = collectionDisplayConfig?.quickFilterField;
|
|
84
85
|
const presetFilters = collectionDisplayConfig?.presetFilters;
|
|
86
|
+
const filterPanel = collectionDisplayConfig?.filterPanel;
|
|
85
87
|
const temporalGroupField = collectionDisplayConfig?.temporalGroupField;
|
|
86
88
|
const enumGroupField = collectionDisplayConfig?.enumGroupField;
|
|
87
89
|
// CARDS arrangement (list vs N-column grid) + per-card action placement +
|
|
@@ -289,8 +291,10 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
289
291
|
: undefined);
|
|
290
292
|
const searchEnabled = listOp?.searchEnabled ?? true;
|
|
291
293
|
const filtersEnabled = listOp?.filtersEnabled ?? true;
|
|
292
|
-
|
|
293
|
-
|
|
294
|
+
// A field the host pinned is not the reader's to filter (#1630): its value is fixed on every fetch.
|
|
295
|
+
const readerFilterFields = ResourceLayoutUtils.withoutPinnedFilterFields(filterFields, resourceContext.pinnedFilters);
|
|
296
|
+
return { sortFields, filterFields: readerFilterFields, searchEnabled, filtersEnabled };
|
|
297
|
+
}, [availableOperations.search, operation, registry, resourceConfig, contextualParameters, resourceContext.parentResourcesRequirements, resourceContext.pinnedFilters]);
|
|
294
298
|
// Split the promoted quick-filter field OUT of the panel fields: exactly one
|
|
295
299
|
// control owns each filter field (tabs OR panel, never both). A misauthored
|
|
296
300
|
// promotion (unknown field / non-enum / no values) degrades gracefully — no
|
|
@@ -380,6 +384,9 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
380
384
|
resourceContextRef.current = resourceContext;
|
|
381
385
|
const sortKey = sortStates.map(s => `${s.field}:${s.direction}`).join(',');
|
|
382
386
|
const filterKey = useMemo(() => JSON.stringify(filterValues), [filterValues]);
|
|
387
|
+
// Host-pinned filters (#1630) are part of the fetch identity: a host that re-pins refetches.
|
|
388
|
+
const pinnedFilters = resourceContext.pinnedFilters;
|
|
389
|
+
const pinnedFiltersKey = useMemo(() => JSON.stringify(pinnedFilters ?? {}), [pinnedFilters]);
|
|
383
390
|
// Announce this collection surface's ACTIVE FILTER SET. The surface states a
|
|
384
391
|
// fact about itself and owns no scope semantics — `AppScopeContext` decides
|
|
385
392
|
// whether a filter lands on a declared app-scope field (so the app-shell
|
|
@@ -414,6 +421,8 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
414
421
|
}),
|
|
415
422
|
}), [contextualParameters, operation, resourceConfig?.resourceFieldIdentifier, resourceContext, resourceType]);
|
|
416
423
|
const { lastRefreshAt: collectionRefreshAt } = resourceCollectionRefreshEvent({ ctx: collectionRefreshContext });
|
|
424
|
+
// The READER's filters only, not the host's pins (#1630): the announcement feeds the app-shell scope
|
|
425
|
+
// control, which mirrors a reader's choice — an embed pinned to its host must not retarget the app's scope.
|
|
417
426
|
useEffect(() => {
|
|
418
427
|
emitFrontendEvent(FrontendEvents.RESOURCE_COLLECTION_FILTERS_CHANGED, {
|
|
419
428
|
resourceType,
|
|
@@ -425,7 +434,7 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
425
434
|
}, [filterKey, resourceType, emitFrontendEvent]);
|
|
426
435
|
// Whether the current fetch delegates to SEARCH (inline search active)
|
|
427
436
|
const isUsingInlineSearch = debouncedInlineSearch.length > 0 && !!searchOperationPathKey;
|
|
428
|
-
const fetchKey = `${resourceType}|${isUsingInlineSearch ? searchOperationPathKey : operationPathKey}|${contextualParametersKey}|${pagination.page}|${pagination.limit}|${sortKey}|${filterKey}|${debouncedInlineSearch}|${collectionRefreshAt ?? 0}`;
|
|
437
|
+
const fetchKey = `${resourceType}|${isUsingInlineSearch ? searchOperationPathKey : operationPathKey}|${contextualParametersKey}|${pagination.page}|${pagination.limit}|${sortKey}|${filterKey}|${pinnedFiltersKey}|${debouncedInlineSearch}|${collectionRefreshAt ?? 0}`;
|
|
429
438
|
// Fetch data - use refs to avoid dependency on unstable functions.
|
|
430
439
|
// StrictMode double-mounts run this effect twice; the `cancelled` flag plus
|
|
431
440
|
// cleanup disposes of the first mount's in-flight fetch so the second
|
|
@@ -449,8 +458,10 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
449
458
|
// When inline search is active, delegate to SEARCH operation
|
|
450
459
|
if (isUsingInlineSearch && searchOperationPathKey) {
|
|
451
460
|
logDebug('Calling doOperation (SEARCH via inline search)', { searchOperationPathKey, query: debouncedInlineSearch });
|
|
452
|
-
|
|
453
|
-
|
|
461
|
+
// The host's pins apply on top of the reader's filters, and win on a shared key.
|
|
462
|
+
const mergedFilters = ResourceLayoutUtils.withPinnedFilters(filterValuesRef.current, resourceContextRef.current.pinnedFilters);
|
|
463
|
+
const activeFilters = Object.keys(mergedFilters).length > 0
|
|
464
|
+
? mergedFilters
|
|
454
465
|
: undefined;
|
|
455
466
|
const searchCallParams = {
|
|
456
467
|
contextualParameters,
|
|
@@ -477,14 +488,12 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
477
488
|
// LIST controller parses this via `parseCollectionQuerySort`.
|
|
478
489
|
queryParameters.sort = sortStatesRef.current.map(s => `${s.field}:${s.direction}`).join(',');
|
|
479
490
|
}
|
|
480
|
-
// Serialize active filters into query parameters
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
});
|
|
487
|
-
}
|
|
491
|
+
// Serialize active filters into query parameters — the reader's, then the host's pins (#1630), which win.
|
|
492
|
+
Object.entries(ResourceLayoutUtils.withPinnedFilters(filterValuesRef.current, resourceContextRef.current.pinnedFilters)).forEach(([key, value]) => {
|
|
493
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
494
|
+
queryParameters[key] = value;
|
|
495
|
+
}
|
|
496
|
+
});
|
|
488
497
|
result = await doOperationRef.current(operationPathKey, {
|
|
489
498
|
contextualParameters,
|
|
490
499
|
queryParameters,
|
|
@@ -810,6 +819,13 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
810
819
|
// `data-slot="collection-create"` is the i18n-independent automation hook
|
|
811
820
|
// (the label is the runtime-translated per-resource CREATE title) — attribute only.
|
|
812
821
|
_jsxs(Button, { onClick: handleCreate, size: ButtonSize.SM, "data-slot": "collection-create", className: "inline-flex items-center gap-element", children: [addIcon, _jsx("span", { children: createLabel })] })) : undefined;
|
|
822
|
+
// One create, one place — see `collection-create-placement.utils.ts` for the rule. "Narrowed" is the READER's
|
|
823
|
+
// narrowing only: a host's pins (#1630) are what the collection IS, so an empty pinned embed is "none yet".
|
|
824
|
+
const isNarrowed = isCollectionNarrowed({ isSearchActive: isUsingInlineSearch, filterValues: filterValues });
|
|
825
|
+
const emptyStateOffersCreate = useResourceEmptyStateOffersPrimaryAction(emptyStateConfig, !!availableOperations.create);
|
|
826
|
+
const toolbarCreateButton = toolbarOffersCreate({ hasLoadedOnce, itemCount: items.length, isNarrowed, emptyStateOffersCreate })
|
|
827
|
+
? createButton
|
|
828
|
+
: undefined;
|
|
813
829
|
// Whole-scope maintenance actions (collection-scoped operations, e.g. "retry
|
|
814
830
|
// all" / "purge all"). Built ONLY when the resource declares at least one, so
|
|
815
831
|
// the toolbar's trailing cluster stays absent for the many read-only
|
|
@@ -847,13 +863,14 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
847
863
|
// `parseCollectionQuerySort` reads it identically. Two encodings would drift.
|
|
848
864
|
params.sort = sortStates.map((state) => `${state.field}:${state.direction}`).join(',');
|
|
849
865
|
}
|
|
850
|
-
|
|
866
|
+
// The host's pins included (#1630): an export of a pinned embed is the rows it shows, never more.
|
|
867
|
+
for (const [key, value] of Object.entries(ResourceLayoutUtils.withPinnedFilters(filterValues, pinnedFilters))) {
|
|
851
868
|
if (value === undefined || value === null || value === '')
|
|
852
869
|
continue;
|
|
853
870
|
params[key] = value;
|
|
854
871
|
}
|
|
855
872
|
return { params, isSearchActive: Boolean(debouncedInlineSearch) };
|
|
856
|
-
}, [pagination.page, pagination.limit, sortStates, filterValues, debouncedInlineSearch]);
|
|
873
|
+
}, [pagination.page, pagination.limit, sortStates, filterValues, pinnedFilters, debouncedInlineSearch]);
|
|
857
874
|
const collectionActionsNode = hasCollectionScopedOps ? (_jsx(ResourceLayout_CollectionActions, { resourceContext: resourceContext, navigationZone: navigationZone, navigationInitiator: listNavigationInitiator, collectionExportQuery: collectionExportQuery })) : undefined;
|
|
858
875
|
// searchIcon and clearIcon are now rendered inside InlineSearchInput
|
|
859
876
|
if (!isReady)
|
|
@@ -875,11 +892,11 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
875
892
|
query: inlineSearch.query,
|
|
876
893
|
onChange: inlineSearch.handleChange,
|
|
877
894
|
onClear: inlineSearch.handleClear,
|
|
878
|
-
} : undefined, filterFields: filtersEnabled ? panelFilterFields : [], filterValues: filterValues, onFiltersChange: handleFiltersChange, sort: viewMode === CollectionDisplayMode.CARDS && sortFields.length > 0 ? {
|
|
895
|
+
} : undefined, filterFields: filtersEnabled ? panelFilterFields : [], filterPanel: filterPanel, filterValues: filterValues, onFiltersChange: handleFiltersChange, sort: viewMode === CollectionDisplayMode.CARDS && sortFields.length > 0 ? {
|
|
879
896
|
sortFields,
|
|
880
897
|
sortStates,
|
|
881
898
|
onSortChange: handleSortChange,
|
|
882
|
-
} : undefined, viewMode: userSwitchableViewMode ? { viewMode, onViewModeChange: setViewMode } : undefined, primaryAction:
|
|
899
|
+
} : undefined, viewMode: userSwitchableViewMode ? { viewMode, onViewModeChange: setViewMode } : undefined, primaryAction: toolbarCreateButton, collectionActions: collectionActionsNode, selection: selectionEnabled ? {
|
|
883
900
|
count: selection.selectionCount,
|
|
884
901
|
onClear: selection.clearSelection,
|
|
885
902
|
// Offered only once the page selection has stopped meaning what the person wants: every
|
|
@@ -891,7 +908,8 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
891
908
|
matchAllOffer: {
|
|
892
909
|
matchedCount: pagination.total,
|
|
893
910
|
onSelectAllMatching: () => selection.selectAllMatching({
|
|
894
|
-
|
|
911
|
+
// The host's pins included (#1630): "all matching" is what this listing matches.
|
|
912
|
+
filters: ResourceLayoutUtils.withPinnedFilters(filterValues, pinnedFilters),
|
|
895
913
|
...(debouncedInlineSearch ? { search: debouncedInlineSearch } : {}),
|
|
896
914
|
matchedCount: pagination.total,
|
|
897
915
|
}),
|
|
@@ -899,7 +917,10 @@ export const ResourceLayoutPreset_List_Default = ({ resourceContext, navigationZ
|
|
|
899
917
|
}
|
|
900
918
|
: {}),
|
|
901
919
|
...(selection.matchAllSelection ? { isMatchAllSelected: true } : {}),
|
|
902
|
-
} : undefined, bulkActions: selectionEnabled ? (_jsx(ResourceLayout_OperationBulk, { resourceContext: resourceContext, navigationZone: navigationZone, navigationInitiator: listNavigationInitiator, selectedItems: selection.selectedItems, matchAllSelection: selection.matchAllSelection, explicitIdSelection: selection.explicitIdSelection, onSelectIds: selection.selectIds, idField: selectionIdField, onSelectionClear: selection.clearSelection, onSelectionReplace: selection.selectAll, fallback: createButton })) : undefined }), _jsx(LoadingGate, { i18nKeys: i18nKeys, loadingScopes: loadingScopes, readiness: readiness, renderLoading: () => (_jsx(Skeleton, { template: viewMode === CollectionDisplayMode.TABLE ? 'table' : isCardGrid ? 'card' : 'list', density: "auto", count: pagination.limit, "aria-hidden": "true" })), children: _jsxs("div", { className: "space-y-section", children: [_jsx(ResourceLayout_InsertedViews, { resourceContext: resourceContext, navigationZone: navigationZone, showCharts: showCharts }), inPlaceHost.isCreateActive && (_jsx(ResourceInPlaceOperationRow, { navigationZone: navigationZone, className: "border border-border rounded-lg" })), items.length === 0 ? (
|
|
920
|
+
} : undefined, bulkActions: selectionEnabled ? (_jsx(ResourceLayout_OperationBulk, { resourceContext: resourceContext, navigationZone: navigationZone, navigationInitiator: listNavigationInitiator, selectedItems: selection.selectedItems, matchAllSelection: selection.matchAllSelection, explicitIdSelection: selection.explicitIdSelection, onSelectIds: selection.selectIds, idField: selectionIdField, onSelectionClear: selection.clearSelection, onSelectionReplace: selection.selectAll, fallback: createButton })) : undefined }), _jsx(LoadingGate, { i18nKeys: i18nKeys, loadingScopes: loadingScopes, readiness: readiness, renderLoading: () => (_jsx(Skeleton, { template: viewMode === CollectionDisplayMode.TABLE ? 'table' : isCardGrid ? 'card' : 'list', density: "auto", count: pagination.limit, "aria-hidden": "true" })), children: _jsxs("div", { className: "space-y-section", children: [_jsx(ResourceLayout_InsertedViews, { resourceContext: resourceContext, navigationZone: navigationZone, showCharts: showCharts }), inPlaceHost.isCreateActive && (_jsx(ResourceInPlaceOperationRow, { navigationZone: navigationZone, className: "border border-border rounded-lg" })), items.length === 0 ? (
|
|
921
|
+
// "Create your first X" belongs to an EMPTY collection. A search or a filter that matched
|
|
922
|
+
// nothing says so, and the empty state's "none yet" would be false there.
|
|
923
|
+
isNarrowed ? (_jsx("div", { className: "text-center py-section text-muted-foreground text-sm", role: "status", children: noSearchResultsLabel })) : (_jsx(ResourceEmptyState, { resourceType: resourceType, config: emptyStateConfig, hasCreateOperation: !!availableOperations.create, onCreateAction: handleCreate }))) : viewMode === CollectionDisplayMode.TABLE ? (_jsx(ResourceCollectionBody_Table, { items: items, resourceType: resourceType, resourceConfig: resourceConfig, navigationZone: navigationZone, summaryFields: summaryFields, fieldLabelsMap: fieldLabelsMap, sortFields: sortFields, sortStates: sortStates, onSortChange: handleSortChange, selectable: selectionEnabled, isRowSelected: selectionIsSelected, onToggleRow: selectionToggle, allSelected: currentPageAllSelected, onToggleAll: handleToggleAllCurrentPage, renderRowActions: renderItemOperations, onRowClick: handleItemClick, canOpenRow: canOpenItem })) : renderedGroups ? (
|
|
903
924
|
/* Grouped cards — one heading per bucket, from either grouping axis: temporal day buckets
|
|
904
925
|
(activity-feed idiom, adjacent-merged in server order) or enum buckets (emitted in the
|
|
905
926
|
enum's declaration order). Group keys are suffixed with the bucket index: non-adjacent
|