Add secrets manager trial empty state UI

What does this MR do and why?

This MR adds the initial frontend scaffolding for the trial experience UI in the secrets manager. It introduces a SecretsTrialEmptyState component that renders when a user is eligible to start a trial (i.e., isPaidExperienceAvailable is true, secrets manager has not been enabled/provisioned yet, and no active trial is in progress).

When eligible for trial, the user can only access the index page for the secrets manager until the trial or add-on is enabled. Access to /new or /edit or /details is prohibited until then.

Technical Notes

  • All new values (isPaidExperienceAvailable, trialStatus) are hard-coded for now to allow frontend development while the backend API is not yet available. Users should see no changes in behavior when this MR is merged.
  • The secrets manager can be enrolled via namespace for SaaS, or through the admin/instance settings for self-managed. This is accounted for when setting enrollmentSettingsPath.
  • ⚠️ For now, Start a trial doesn't work. This will be iterated on in the future. Enable add-on button will link the user to the namespace settings (for SaaS) or the admin settings (for self-managed) so they can enroll.

References

Partially implements Frontend: UI changes to initiate trial for secrets manager (#598495)

Safeguarding the nav menu and controller access is out of scope for this MR and will be handled in #600598. This MR just focuses on the scaffolding for the secrets manager itself.

https://gitlab.com/groups/gitlab-org/-/work_items/21755#note_3423015919 will determine how we'll surface the backend values that are hard-coded for now (isPaidExperienceAvailable, trialStatus).

Screenshots or screen recordings

When eligible for trial and...

Openbao is unhealthy Openbao is healthy
openbao_unhealthy Screenshot_2026-06-05_at_07.06.14

How to set up and validate locally

Enabling the Secrets Manager

  1. Upload a Premium license (or above).
  2. Set up the GDK with OpenBao: https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/doc/howto/openbao.md
  3. Enable the following feature flags: secrets_manager, group_secrets_manager, secrets_manager_instance_enrollment.

Verifying the feature

  1. Copy the following code block and apply using pbpaste | git apply. This will update the hard-coded values to enable the trial experience.
    diff --git a/ee/app/assets/javascripts/ci/secrets/index.js b/ee/app/assets/javascripts/ci/secrets/index.js
    index 0b5a3405aa41..28666733601f 100644
    --- a/ee/app/assets/javascripts/ci/secrets/index.js
    +++ b/ee/app/assets/javascripts/ci/secrets/index.js
    @@ -88,7 +88,7 @@ export const initProjectSecretsApp = () => {
        // TODO: hard-coded for now while value is not yet available from backend
        // See: https://gitlab.com/groups/gitlab-org/-/work_items/21755#note_3423015919
        trialStatus: {
    -        isEligible: false,
    +        isEligible: true,
        },
        },
        basePath,
    diff --git a/ee/app/controllers/projects/secrets_controller.rb b/ee/app/controllers/projects/secrets_controller.rb
    index 0217444955ff..8e619f1f7cc9 100644
    --- a/ee/app/controllers/projects/secrets_controller.rb
    +++ b/ee/app/controllers/projects/secrets_controller.rb
    @@ -9,8 +9,8 @@ class SecretsController < Projects::ApplicationController
    
        layout 'project'
    
    -    before_action :authorize_view_secrets!
    -    before_action :check_secrets_enabled!
    +    # before_action :authorize_view_secrets!
    +    # before_action :check_secrets_enabled!
    
        before_action do
        push_frontend_feature_flag(:secrets_manager_paid_experience)
    -- 
  2. Enable the feature flag: secrets_manager_paid_experience
  3. Without enrolling or enabling the secrets manager, visit /-/secrets and verify that you can see the trial experience empty state. The Enable add-on button should direct you to the admin settings.

Verifying no changes

Undo changes from above.

  1. Go to the General Admin settings and enroll your GDK to use the secrets manager.
  2. To test on projects, go to the project settings (Settings > General) and expand Visibility, project features, permissions to enable the secrets manager for the project.
  3. Go to /-/secrets to view the secrets manager.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Mireya Andres

Merge request reports

Loading