From 98a384ee7fc206e37981b901d68b4d6535736b47 Mon Sep 17 00:00:00 2001 From: Sodbileg Gansukh Date: Tue, 17 Feb 2026 18:54:39 +0800 Subject: [PATCH 1/5] Made copy link action more prominent in offer edit modal (#26437) ref https://linear.app/ghost/issue/DES-1292/offer-creation-primary-action-is-a-tiny-non-obvious-link The copy link is the primary action when editing an offer but was buried as a tiny link below the offer code input at the bottom of the form. Moved the offer code field to sit right below the offer name and added an inline copy link button for better discoverability. --- > [!NOTE] > **Low Risk** > UI-only layout/styling changes in the offer edit modal; no changes to saving logic or API interactions. > > **Overview** > Makes the *offer link copy* action more prominent when editing an offer by moving the `Offer code` field directly under `Offer name` and rendering a visible inline `Copy link` button within the input when a code is present. > > Updates the `Offer code` field hint styling to show a truncated URL preview and removes the previous small link-style copy control embedded in the hint area. > > Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 3ba5367e549ed1fdc8df6c3e1495fad4011ba01d. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot). --- .../growth/offers/edit-offer-modal.tsx | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx b/apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx index 12a8aad2156..45897ad1680 100644 --- a/apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx +++ b/apps/admin-x-settings/src/components/settings/growth/offers/edit-offer-modal.tsx @@ -142,6 +142,17 @@ const Sidebar: React.FC<{ }} onKeyDown={() => clearError('name')} /> + {homepageUrl}{offer?.code} : null)} + placeholder='black-friday' + rightPlaceholder={offer?.code !== '' ? diff --git a/apps/admin/src/whats-new/components/whats-new-banner.tsx b/apps/admin/src/whats-new/components/whats-new-banner.tsx index 40cd51eb426..a2044ee997f 100644 --- a/apps/admin/src/whats-new/components/whats-new-banner.tsx +++ b/apps/admin/src/whats-new/components/whats-new-banner.tsx @@ -49,10 +49,10 @@ function WhatsNewBanner() { data-test-toast-link >
- - What’s new? + + What’s new?
-
+
{latestEntry.title}
diff --git a/apps/shade/src/components/ui/banner.tsx b/apps/shade/src/components/ui/banner.tsx index 10d5af676a5..4dd240f15dc 100644 --- a/apps/shade/src/components/ui/banner.tsx +++ b/apps/shade/src/components/ui/banner.tsx @@ -9,17 +9,19 @@ const bannerVariants = cva( { variants: { variant: { - default: 'border border-border bg-background shadow-sm hover:shadow-md', + default: 'border border-border bg-background shadow-sm hover:shadow-md dark:border-gray-900 dark:bg-gray-925', gradient: [ - 'cursor-pointer border border-gray-100 bg-white', + 'cursor-pointer border border-gray-100 bg-white dark:border-gray-950 dark:bg-black', 'shadow-[rgb(75_225_226_/_28%)_-7px_-6px_42px_8px,rgb(202_103_255_/_32%)_7px_6px_42px_8px]', + 'dark:shadow-[rgb(75_225_226_/_36%)_-7px_-6px_42px_8px,rgb(202_103_255_/_38%)_7px_6px_42px_8px]', 'hover:shadow-[rgb(75_225_226_/_38%)_-7px_-4px_42px_10px,rgb(202_103_255_/_42%)_7px_8px_42px_10px]', + 'dark:hover:shadow-[rgb(75_225_226_/_50%)_-7px_-4px_42px_10px,rgb(202_103_255_/_52%)_7px_8px_42px_10px]', 'hover:translate-y-[-2px] hover:scale-[1.01]' ], info: 'bg-blue-50 border-blue-200 dark:bg-blue-950/30 dark:border-blue-800 border', success: 'bg-green-50 border-green-200 dark:bg-green-950/30 dark:border-green-800 border', warning: 'bg-yellow-50 border-yellow-200 dark:bg-yellow-950/30 dark:border-yellow-800 border', - destructive: 'bg-white shadow-sm dark:bg-black' + destructive: 'bg-white shadow-sm dark:bg-gray-950' }, size: { sm: 'p-2 text-sm', @@ -85,7 +87,7 @@ const Banner = React.forwardRef( {dismissible && (