onboarding tracking is now wired, the tour can be replayed from Settings, install‑banner reset is included, and empty states in Tasks/Members/Guest Messages now have guided CTAs.
What changed:
- Onboarding tracking: admin_app_opened on first authenticated dashboard load; event_created, branding_configured,
and invite_created on their respective actions.
- Tour replay: Settings now has an “Experience” section to replay the tour (clears tour seen flag and opens via ?tour=1).
- Empty states: Tasks, Members, and Guest Messages now include richer copy + quick actions.
- New helpers + copy: Tour storage helpers, new translations, and related UI wiring.
This commit is contained in:
@@ -47,6 +47,7 @@ export default function MobileEventGuestNotificationsPage() {
|
||||
const [sending, setSending] = React.useState(false);
|
||||
const [error, setError] = React.useState<string | null>(null);
|
||||
const [fallbackAttempted, setFallbackAttempted] = React.useState(false);
|
||||
const formRef = React.useRef<HTMLDivElement | null>(null);
|
||||
|
||||
const [form, setForm] = React.useState<FormState>({
|
||||
title: '',
|
||||
@@ -200,7 +201,8 @@ export default function MobileEventGuestNotificationsPage() {
|
||||
</MobileCard>
|
||||
) : null}
|
||||
|
||||
<MobileCard space="$3">
|
||||
<div ref={formRef}>
|
||||
<MobileCard space="$3">
|
||||
<Text fontSize="$md" fontWeight="800" color={String(theme.color?.val ?? '#111827')}>
|
||||
{t('guestMessages.composeTitle', 'Send a message')}
|
||||
</Text>
|
||||
@@ -294,7 +296,8 @@ export default function MobileEventGuestNotificationsPage() {
|
||||
</Text>
|
||||
) : null}
|
||||
</YStack>
|
||||
</MobileCard>
|
||||
</MobileCard>
|
||||
</div>
|
||||
|
||||
<MobileCard space="$2">
|
||||
<XStack alignItems="center" justifyContent="space-between">
|
||||
@@ -313,10 +316,18 @@ export default function MobileEventGuestNotificationsPage() {
|
||||
))}
|
||||
</YStack>
|
||||
) : history.length === 0 ? (
|
||||
<YStack space="$1.5">
|
||||
<Text fontSize="$sm" color={mutedText}>
|
||||
{t('guestMessages.empty', 'No guest messages yet.')}
|
||||
<YStack space="$2">
|
||||
<Text fontSize="$sm" fontWeight="700" color={String(theme.color?.val ?? '#111827')}>
|
||||
{t('guestMessages.emptyTitle', 'Send your first guest message')}
|
||||
</Text>
|
||||
<Text fontSize="$xs" color={mutedText}>
|
||||
{t('guestMessages.emptyBody', 'Share a quick reminder or highlight to keep guests engaged.')}
|
||||
</Text>
|
||||
<CTAButton
|
||||
label={t('guestMessages.emptyAction', 'Compose message')}
|
||||
fullWidth={false}
|
||||
onPress={() => formRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' })}
|
||||
/>
|
||||
</YStack>
|
||||
) : (
|
||||
<YStack space="$2">
|
||||
|
||||
Reference in New Issue
Block a user