From ed203649440cec81d10f0c0e730a59ffd66e06c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Grandin?= Date: Fri, 15 May 2026 15:37:50 +0200 Subject: [PATCH 1/4] refactor(components): standardize icon alignment in buttons and update spacing guidelines, tokens update on some components --- .../skills/qovery-ui/references/components.md | 1 + .../qovery-ui/references/spacing-layout.md | 9 +--- .../cluster/$clusterId/settings/general.tsx | 2 +- .../organization/$organizationId/clusters.tsx | 16 +++--- .../$environmentId/overview/route.tsx | 3 +- apps/console/src/routes/login/index.tsx | 2 +- .../feature/src/lib/audit-logs/audit-logs.tsx | 4 +- .../src/lib/filter-section/filter-section.tsx | 15 ++++-- .../cluster-scw-control-plane-feature.tsx | 1 + .../cluster-access-modal.spec.tsx.snap | 21 +++++--- .../cluster-actions.spec.tsx.snap | 18 +++---- .../lib/cluster-actions/cluster-actions.tsx | 6 +-- .../cluster-card-feature.tsx | 2 +- .../__snapshots__/cluster-card.spec.tsx.snap | 8 +-- .../cluster-new/cluster-new.tsx | 2 +- .../button-popover-subnets.tsx | 2 +- .../step-summary-presentation.tsx | 4 +- .../cluster-delete-modal.spec.tsx.snap | 12 ++--- .../cluster-installation-guide-modal.tsx | 3 +- .../cluster-logs-list/cluster-logs-list.tsx | 4 +- .../cluster-migration-modal.spec.tsx.snap | 4 +- .../cluster-network-settings.tsx | 6 +-- .../cluster-resources-settings.tsx | 5 +- .../__snapshots__/cluster-setup.spec.tsx.snap | 7 +-- .../src/lib/cluster-setup/cluster-setup.tsx | 2 +- .../gpu-resources-settings.tsx | 3 +- .../scaleway-static-ip/scaleway-static-ip.tsx | 2 +- .../section-production-health.tsx | 3 +- .../environment-stages/environment-stages.tsx | 6 +-- .../list-pre-check-logs.tsx | 6 +-- ...eate-clone-environment-modal.spec.tsx.snap | 4 +- .../environment-action-toolbar.spec.tsx.snap | 12 ++--- .../table-filter-trigger-by.tsx | 4 +- .../environment-last-deployment-section.tsx | 4 +- .../environment-section.tsx | 4 +- .../environments-table/environments-table.tsx | 3 +- .../terraform-export-modal.spec.tsx.snap | 4 +- .../update-all-modal.spec.tsx.snap | 6 +-- .../alert-rules-action-bar.tsx | 8 +-- .../alert-rules-overview.tsx | 7 +-- .../issue-overview/issue-overview.tsx | 3 +- .../notification-channel-overview.tsx | 16 +++--- .../database-rds-dashboard.tsx | 25 ++++++---- .../select-time-range/select-time-range.tsx | 2 +- .../src/lib/modal-chart/modal-chart.tsx | 4 +- .../service-alerting/service-alerting.tsx | 3 +- .../select-time-range/select-time-range.tsx | 2 +- .../service-dashboard/service-dashboard.tsx | 25 ++++++---- .../lib/step-personalize/step-personalize.tsx | 11 +--- .../feature/src/lib/step-plans/step-plans.tsx | 6 +-- .../src/lib/step-project/step-project.tsx | 11 +--- ...annotation-create-edit-modal.spec.tsx.snap | 11 ++-- .../annotation-create-edit-modal.tsx | 2 +- .../git-repository-service-settings.tsx | 2 +- .../git-repository-settings.tsx | 4 +- .../git-token-list.spec.tsx.snap | 12 ++--- .../label-create-edit-modal.spec.tsx.snap | 11 ++-- .../label-create-edit-modal.tsx | 2 +- .../settings-api-token/settings-api-token.tsx | 4 +- .../settings-argocd-integration.tsx | 8 +-- .../settings-billing-details.tsx | 3 +- .../settings-billing-summary.tsx | 4 +- .../settings-cloud-credentials.tsx | 4 +- .../settings-container-registries.tsx | 4 +- .../section-github-app/section-github-app.tsx | 3 +- .../settings-git-repository-access.tsx | 4 +- .../settings-helm-repositories.tsx | 4 +- .../settings-labels-annotations.tsx | 4 +- .../row-member/row-member.tsx | 7 ++- .../lib/settings-members/settings-members.tsx | 4 +- .../src/lib/settings-roles/settings-roles.tsx | 4 +- .../lib/settings-webhook/settings-webhook.tsx | 4 +- .../deployment-rules/deployement-rules.tsx | 5 +- .../src/lib/project-list/project-list.tsx | 8 +-- ...etworking-port-setting-modal.spec.tsx.snap | 8 +-- ...s-override-arguments-setting.spec.tsx.snap | 23 +++++---- .../values-override-arguments-setting.tsx | 9 ++-- ...alues-override-files-setting.spec.tsx.snap | 5 +- .../values-override-yaml-modal.spec.tsx.snap | 4 +- .../dockerfile-settings.tsx | 2 +- .../deployment-logs-placeholder.tsx | 6 +-- .../src/lib/header-logs/header-logs.tsx | 12 ++--- .../list-deployment-logs.tsx | 9 ++-- .../header-service-logs.tsx | 20 +++++--- .../service-logs-placeholder.tsx | 2 +- .../show-new-logs-button.tsx | 4 +- ...plication-container-port-settings-list.tsx | 2 +- ...application-container-storage-settings.tsx | 3 +- .../helm-networking-settings.tsx | 4 +- ...rvice-deployment-restrictions-settings.tsx | 3 +- .../service-domain-settings.tsx | 5 +- .../terraform-tfvars-popover.tsx | 14 ++---- ...file-fragment-inline-setting.spec.tsx.snap | 7 +-- .../terraform-tfvars-popover.tsx | 14 ++---- .../terraform-variables-table.tsx | 8 +-- .../auto-deploy-badge/auto-deploy-badge.tsx | 4 +- ...ation-cancel-lifecycle-modal.spec.tsx.snap | 4 +- .../force-unlock-modal.spec.tsx.snap | 4 +- .../__snapshots__/last-commit.spec.tsx.snap | 5 +- .../src/lib/last-commit/last-commit.tsx | 11 ++-- .../__snapshots__/last-version.spec.tsx.snap | 3 +- .../src/lib/last-version/last-version.tsx | 4 +- .../__snapshots__/pod-details.spec.tsx.snap | 12 +++-- .../src/lib/pod-details/pod-details.tsx | 4 +- .../redeploy-modal.spec.tsx.snap | 4 +- .../select-commit-modal.spec.tsx.snap | 4 +- .../select-version-modal.spec.tsx.snap | 8 +-- .../copy-button/copy-button.tsx | 4 +- .../service-access-modal.tsx | 4 +- .../service-actions.spec.tsx.snap | 12 ++--- .../service-clone-modal.spec.tsx.snap | 4 +- .../application-container-port-list.tsx | 2 +- .../service-deployment-list.tsx | 18 +++---- .../table-filter-trigger-by.tsx | 4 +- .../service-list-action-bar.spec.tsx.snap | 6 ++- .../__snapshots__/service-list.spec.tsx.snap | 32 +++++++----- .../service-list/service-list-action-bar.tsx | 8 +-- .../src/lib/service-list/service-list.tsx | 3 +- .../instance-metrics.spec.tsx.snap | 2 +- .../service-header/service-header.tsx | 24 +++++---- .../service-last-deployment.tsx | 11 ++-- .../service-terminal.spec.tsx.snap | 8 +-- .../__snapshots__/input-search.spec.tsx.snap | 10 ++-- .../input-search/input-search.tsx | 2 +- .../lib/service-terminal/service-terminal.tsx | 3 +- .../services-deployment-pipeline.tsx | 3 +- .../create-update-variable-modal.tsx | 10 +--- .../flow-create-variable.tsx | 4 +- .../variable-row/variable-row.tsx | 4 +- .../__snapshots__/variable-list.spec.tsx.snap | 35 +++++++------ .../variables-action-toolbar.tsx | 8 +-- .../feature/src/lib/need-help/need-help.tsx | 4 +- .../section-ai-copilot-configuration.tsx | 2 +- .../section-ai-copilot-opt-in.tsx | 2 +- .../devops-copilot-button.tsx | 3 +- .../assistant-message/assistant-message.tsx | 6 +-- .../devops-copilot-panel.tsx | 4 +- .../enable-copilot-screen.tsx | 4 +- .../input/__snapshots__/input.spec.tsx.snap | 6 ++- .../lib/devops-copilot-panel/input/input.tsx | 3 +- .../ui/src/lib/components/banner/banner.tsx | 4 +- .../button-primitive.spec.tsx.snap | 2 +- .../button-primitive.spec.tsx | 50 ++++++++++++++++++- .../button-primitive/button-primitive.tsx | 8 +-- .../button/__snapshots__/button.spec.tsx.snap | 4 +- .../src/lib/components/button/button.spec.tsx | 16 +++++- .../lib/components/button/button.stories.tsx | 13 +++++ .../ui/src/lib/components/callout/callout.tsx | 4 +- .../code-editor-inline-setting.tsx | 2 +- .../components/copy-button/copy-button.tsx | 4 +- .../error-boundary/error-boundary.tsx | 4 +- .../components/funnel-flow/funnel-flow.tsx | 2 +- .../__snapshots__/input-filter.spec.tsx.snap | 8 +-- .../inputs/input-filter/input-filter.tsx | 6 +-- .../modal-confirmation.spec.tsx.snap | 12 ++--- .../modal-multi-confirmation.spec.tsx.snap | 8 +-- .../components/table-filter/table-filter.tsx | 4 +- .../table-head-datepicker.tsx | 8 +-- .../table-head-filter/table-head-filter.tsx | 14 ++---- .../table-head-hierarchical-filter.tsx | 14 ++---- 160 files changed, 604 insertions(+), 530 deletions(-) diff --git a/.agents/skills/qovery-ui/references/components.md b/.agents/skills/qovery-ui/references/components.md index adbadabea9d..e332b1bf011 100644 --- a/.agents/skills/qovery-ui/references/components.md +++ b/.agents/skills/qovery-ui/references/components.md @@ -13,6 +13,7 @@ Always use ` -``` +- **Button with icon + text:** use ` diff --git a/libs/domains/audit-logs/feature/src/lib/audit-logs/audit-logs.tsx b/libs/domains/audit-logs/feature/src/lib/audit-logs/audit-logs.tsx index c8adf0d54c6..26c955b81c4 100644 --- a/libs/domains/audit-logs/feature/src/lib/audit-logs/audit-logs.tsx +++ b/libs/domains/audit-logs/feature/src/lib/audit-logs/audit-logs.tsx @@ -329,9 +329,9 @@ export function AuditLogs({

{auditLogsRetentionInDays} days limit reached. -

diff --git a/libs/domains/audit-logs/feature/src/lib/filter-section/filter-section.tsx b/libs/domains/audit-logs/feature/src/lib/filter-section/filter-section.tsx index 66a49f44208..f25c564e9c8 100644 --- a/libs/domains/audit-logs/feature/src/lib/filter-section/filter-section.tsx +++ b/libs/domains/audit-logs/feature/src/lib/filter-section/filter-section.tsx @@ -183,7 +183,7 @@ export function FilterSection({ clearFilter, queryParams, targetTypeSelectedItem variant="surface" color="neutral" size="xs" - className="pl-9.5 justify-center gap-1.5 active:scale-[1]" + className="pl-9.5 justify-center active:scale-[1]" key={badge.key} > {`${badge.displayedName}: `} @@ -191,6 +191,7 @@ export function FilterSection({ clearFilter, queryParams, targetTypeSelectedItem {badge.key !== 'timestamp' && } {badge.isDeletable && ( deleteFilter(badge.key, setFilter)} @@ -225,7 +226,7 @@ export function FilterSection({ clearFilter, queryParams, targetTypeSelectedItem variant="surface" color="neutral" size="xs" - className={clsx('justify-center gap-1.5 active:scale-[1]', { + className={clsx('justify-center active:scale-[1]', { 'rounded-l-full rounded-r-none border-r-0 pr-4': isFirst && !isLast, 'rounded-full': isFirst && isLast, 'rounded-l-none rounded-r-full border-l-0 pl-4': isLast && !isFirst, @@ -244,7 +245,11 @@ export function FilterSection({ clearFilter, queryParams, targetTypeSelectedItem aria-label="Delete filter" > {badge.isDeletable && ( - + )} @@ -269,9 +274,9 @@ export function FilterSection({ clearFilter, queryParams, targetTypeSelectedItem {/* RIGHT: Button stays fixed at top-right */} {badges.filter((b) => b.isDeletable).length > 0 && ( - )} diff --git a/libs/domains/cloud-providers/feature/src/lib/cluster-scw-control-plane-feature/cluster-scw-control-plane-feature.tsx b/libs/domains/cloud-providers/feature/src/lib/cluster-scw-control-plane-feature/cluster-scw-control-plane-feature.tsx index c80474f4d32..59237bbbc30 100644 --- a/libs/domains/cloud-providers/feature/src/lib/cluster-scw-control-plane-feature/cluster-scw-control-plane-feature.tsx +++ b/libs/domains/cloud-providers/feature/src/lib/cluster-scw-control-plane-feature/cluster-scw-control-plane-feature.tsx @@ -71,6 +71,7 @@ export function ClusterSCWControlPlaneFeature({ production }: ClusterSCWControlP Scaleway documentation diff --git a/libs/domains/clusters/feature/src/lib/cluster-access-modal/__snapshots__/cluster-access-modal.spec.tsx.snap b/libs/domains/clusters/feature/src/lib/cluster-access-modal/__snapshots__/cluster-access-modal.spec.tsx.snap index e8e4946d6b2..2456357b9b7 100644 --- a/libs/domains/clusters/feature/src/lib/cluster-access-modal/__snapshots__/cluster-access-modal.spec.tsx.snap +++ b/libs/domains/clusters/feature/src/lib/cluster-access-modal/__snapshots__/cluster-access-modal.spec.tsx.snap @@ -70,13 +70,14 @@ exports[`ClusterAccessModal should match snapshot 1`] = ` qovery cluster kubeconfig --cluster-id 000