import React from 'react'; import { StyleSheet, Text, View } from 'react-native'; import type { SduiBlock } from '@proulr/sdui-contract'; import { resolveDataRefString } from '../lib/resolve-data-ref'; import { useSduiHybridRenderer } from '../sdui-hybrid-renderer-context'; import type { SduiBlockRenderProps } from './SduiPrimitiveBlocks'; function readStringProp(block: SduiBlock, key: string): string | undefined { const value = block.props[key]; return typeof value === 'string' ? value : undefined; } export function SduiStoryRailBlock({ block }: SduiBlockRenderProps) { const hybrid = useSduiHybridRenderer(); const surface = readStringProp(block, 'surface') === 'vibes' ? 'vibes' : 'discover'; if (hybrid.renderStoryRail) { return <>{hybrid.renderStoryRail({ surface })}; } return ( StoryRail ({surface}) ); } export function SduiProfileCompletionBannerBlock({ block, data, onAction }: SduiBlockRenderProps) { const hybrid = useSduiHybridRenderer(); const percentRef = readStringProp(block, 'percent_ref') ?? 'profile_completion_percent'; const percent = Number(resolveDataRefString(data, percentRef) || '0'); const dismissActionId = readStringProp(block, 'dismiss_action_id'); const completeActionId = readStringProp(block, 'complete_action_id'); if (hybrid.renderProfileCompletionBanner) { return ( <> {hybrid.renderProfileCompletionBanner({ percent, onDismiss: () => dismissActionId && onAction(dismissActionId), onComplete: () => completeActionId && onAction(completeActionId), })} ); } if (percent <= 0) return null; return ( Complete seu perfil ({percent}%) ); } const styles = StyleSheet.create({ placeholder: { padding: 12, }, placeholderText: { color: '#A3A3A3', fontSize: 13, }, });