fix(dashboard): course landing page editor section and currency bugs (#768)

* fix(dashboard): course landing page editor section and currency bugs

- Raise currency select z-index so the dropdown is clickable in the
  full-screen editor shell
- Show dashed top/bottom borders and section title on hover and when
  active in EditableLandingSection
- Map hero/header section keys in the course editor preview context

Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>

* fix(ui): format course landing page pricing with Intl currency

Use getCourseCurrencyFormatter (matching dashboard getCurrencyFormatter)
so NGN and USD prices render as proper locale currency strings instead of
raw numbers with a currency code suffix.

Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>

* fix(ui): prefix group class for landing section hover badge

Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>

* fix(ui): remove unused formatCourseCurrency helper

Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>

* refactor: move currency formatter to @cio/utils

Shared course price formatting belongs in @cio/utils, not the UI
package. Dashboard re-exports the helper to keep existing imports.

Co-authored-by: Rotimi Best <rotimi-best@users.noreply.github.com>

---------
This commit is contained in:
Rotimi Best
2026-07-19 12:09:38 +01:00
committed by GitHub
co-authored by Rotimi Best
parent 6c3a982daf
commit 0822f5f5a3
7 changed files with 43 additions and 38 deletions
+11
View File
@@ -0,0 +1,11 @@
/** Locale-aware currency formatter for course prices (NGN and USD). */
export function getCurrencyFormatter(currency: string | undefined = 'USD') {
const normalizedCurrency = currency === 'NGN' ? 'NGN' : 'USD';
const locale = normalizedCurrency === 'NGN' ? 'en-NG' : 'en-US';
return new Intl.NumberFormat(locale, {
style: 'currency',
currency: normalizedCurrency,
minimumFractionDigits: 2
});
}
+1
View File
@@ -1,4 +1,5 @@
export * from './array';
export * from './currency';
export * from './fileValidation';
export * from './sanitize';
export * from './slug';