@blinkdotnew/mobile-ui 2.0.0-alpha.12 → 2.0.0-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/config/tamagui.config.ts","../src/primitives/Button.tsx","../src/primitives/Text.tsx","../src/primitives/Card.tsx","../src/primitives/Input.tsx","../src/primitives/Avatar.tsx","../src/interface/Headings.tsx","../src/interface/PageContainer.tsx","../src/interface/Dialog.tsx","../src/interface/Pressable.tsx","../src/interface/Image.tsx","../src/interface/Badge.tsx","../src/interface/Icon.tsx","../src/interface/BlinkAccordion.tsx","../src/interface/BlinkTabs.tsx","../src/interface/BlinkToggleGroup.tsx","../src/interface/BlinkToast.tsx","../src/interface/FormField.tsx","../src/interface/Tooltip.tsx","../src/layouts/StepPageLayout.tsx","../src/layouts/ScreenLayout.tsx","../src/layouts/Section.tsx","../src/layouts/ListItem.tsx","../src/layouts/Divider.tsx","../src/layouts/KeyboardStickyFooter.tsx","../src/layouts/SafeArea.tsx","../src/layouts/Grid.tsx","../src/patterns/PaywallScreen.tsx","../src/patterns/OnboardingCarousel.tsx","../src/patterns/ChatBubble.tsx","../src/patterns/SettingsScreen.tsx","../src/patterns/EmptyState.tsx","../src/patterns/ProfileHeader.tsx","../src/patterns/AppHeader.tsx","../src/patterns/BottomSheet.tsx","../src/patterns/LoginScreen.tsx","../src/patterns/TabBar.tsx","../src/patterns/SearchBar.tsx","../src/patterns/FloatingActionButton.tsx","../src/patterns/ActionSheet.tsx","../src/patterns/Skeleton.tsx","../src/patterns/NotificationBanner.tsx","../src/patterns/ProgressSteps.tsx","../src/patterns/SwipeableRow.tsx","../src/patterns/MediaCard.tsx","../src/patterns/Carousel.tsx","../src/patterns/PullToRefresh.tsx","../src/patterns/ProductCard.tsx","../src/patterns/PricingTable.tsx","../src/patterns/CountdownBanner.tsx","../src/patterns/TestimonialCard.tsx","../src/patterns/ConfirmDialog.tsx","../src/patterns/Chip.tsx","../src/patterns/OTPInput.tsx","../src/patterns/PasswordInput.tsx","../src/patterns/AvatarGroup.tsx","../src/patterns/SwipeCards.tsx","../src/patterns/GlassCard.tsx"],"sourcesContent":["// Config\nexport { blinkConfig } from './config/tamagui.config'\nexport type { BlinkConfig } from './config/tamagui.config'\nexport { defaultConfig as tamaguiDefaultConfig } from '@tamagui/config/v5'\n\n// ─── Tamagui re-exports (full component library) ────────────────────────────\nexport {\n // Layout primitives\n View, Stack, SizableStack, ThemeableStack, Frame,\n XStack, YStack, ZStack, ScrollView,\n Circle, Square, Spacer, EnsureFlexed,\n // Groups\n Group, XGroup, YGroup,\n // Semantic HTML elements\n Header, Footer, Main, Nav, Article, Aside,\n // Text\n H1, H2, H3, H4, H5, H6, Heading, Paragraph, SizableText, Text, Label,\n // Forms\n Button, Input, TextArea, Switch, Checkbox, Slider, RadioGroup, Select, Fieldset, Form,\n // Display\n Card, Avatar, Separator, Image as TamaguiImage, Progress, Spinner,\n ListItem as TamaguiListItem, Anchor,\n // Overlay & portals\n Sheet, Dialog, AlertDialog, Popover, Tooltip, TooltipSimple,\n Portal, PortalHost, PortalItem, PortalProvider,\n // Navigation (composable Tamagui components)\n Tabs, Accordion, ToggleGroup,\n // Animation\n AnimatePresence,\n // Adapt\n Adapt,\n // Utilities\n VisuallyHidden, Unspaced,\n // Theme & config\n Theme, TamaguiProvider, TamaguiProvider as BlinkProvider,\n createTamagui, createFont, createMedia, createTheme, createTokens,\n createVariable, createStyledContext,\n addTheme, updateTheme, replaceTheme,\n // Styled\n styled, withStaticProperties,\n // Platform\n isWeb, isClient,\n // Token & config access\n getConfig, getToken, getTokens, getTokenValue,\n // Ref & event utilities\n composeRefs, composeEventHandlers,\n // Hooks\n useTheme, useMedia, useThemeName,\n useControllableState, useEvent, useForceUpdate,\n useIsomorphicLayoutEffect, useComposedRefs,\n useWindowDimensions, useDidFinishSSR,\n useDebounce, useDebounceValue,\n usePresence, useIsPresent,\n // Types\n type GetProps, type SizeTokens, type ColorTokens, type ThemeTokens,\n} from 'tamagui'\n\n// ─── Blink styled primitives (named to avoid Tamagui conflicts) ──────────────\nexport { Button as BlinkButton } from './primitives/Button'\nexport type { ButtonProps as BlinkButtonProps } from './primitives/Button'\n\nexport { BlinkText } from './primitives/Text'\nexport type { BlinkTextProps } from './primitives/Text'\n\nexport { Card as BlinkCard } from './primitives/Card'\nexport type { CardProps as BlinkCardProps } from './primitives/Card'\n\nexport { Input as BlinkInput } from './primitives/Input'\nexport type { InputProps as BlinkInputProps } from './primitives/Input'\n\nexport { Avatar as BlinkAvatar } from './primitives/Avatar'\nexport type { AvatarProps as BlinkAvatarProps } from './primitives/Avatar'\n\n// ─── Blink interface components ──────────────────────────────────────────────\nexport { SubHeading, SepHeading } from './interface/Headings'\nexport { PageContainer, PageMainContainer } from './interface/PageContainer'\nexport { DialogProvider, showError, dialogConfirm } from './interface/Dialog'\nexport { Pressable } from './interface/Pressable'\nexport { Image } from './interface/Image'\nexport { Badge } from './interface/Badge'\nexport type { BadgeProps } from './interface/Badge'\n\nexport { Icon, ICONS } from './interface/Icon'\nexport type { IconName, IconProps } from './interface/Icon'\n\nexport { BlinkAccordion } from './interface/BlinkAccordion'\nexport type { BlinkAccordionProps, BlinkAccordionItem } from './interface/BlinkAccordion'\n\nexport { BlinkTabs } from './interface/BlinkTabs'\nexport type { BlinkTabsProps, BlinkTabItem } from './interface/BlinkTabs'\n\nexport { BlinkToggleGroup } from './interface/BlinkToggleGroup'\nexport type { BlinkToggleGroupProps, BlinkToggleOption } from './interface/BlinkToggleGroup'\n\nexport { BlinkToastProvider, useBlinkToast, toast } from './interface/BlinkToast'\nexport type { BlinkToastVariant, BlinkToastData, BlinkToastOptions, BlinkToastContextType } from './interface/BlinkToast'\n\nexport { FormField } from './interface/FormField'\nexport type { FormFieldProps } from './interface/FormField'\n\nexport { BlinkTooltip } from './interface/Tooltip'\nexport type { TooltipProps } from './interface/Tooltip'\n\n// ─── Blink layouts ───────────────────────────────────────────────────────────\nexport { StepPageLayout } from './layouts/StepPageLayout'\nexport type { StepPageProps } from './layouts/StepPageLayout'\n\nexport { ScreenLayout } from './layouts/ScreenLayout'\n\nexport { Section } from './layouts/Section'\nexport type { SectionProps } from './layouts/Section'\n\nexport { ListItem } from './layouts/ListItem'\nexport type { ListItemProps } from './layouts/ListItem'\n\nexport { Divider } from './layouts/Divider'\nexport type { DividerProps } from './layouts/Divider'\n\nexport { KeyboardStickyFooter } from './layouts/KeyboardStickyFooter'\nexport type { KeyboardStickyFooterProps } from './layouts/KeyboardStickyFooter'\n\nexport { SafeArea } from './layouts/SafeArea'\nexport type { SafeAreaProps } from './layouts/SafeArea'\n\nexport { Grid, Container } from './layouts/Grid'\nexport type { GridProps, ContainerProps } from './layouts/Grid'\n\n// ─── Blink patterns ─────────────────────────────────────────────────────────\nexport { PaywallScreen } from './patterns/PaywallScreen'\nexport type { PaywallScreenProps, PlanOption } from './patterns/PaywallScreen'\n\nexport { OnboardingCarousel } from './patterns/OnboardingCarousel'\nexport type { OnboardingCarouselProps, OnboardingStep } from './patterns/OnboardingCarousel'\n\nexport { ChatBubble } from './patterns/ChatBubble'\nexport type { ChatBubbleProps, ChatMessage } from './patterns/ChatBubble'\n\nexport { SettingsScreen } from './patterns/SettingsScreen'\nexport type { SettingsScreenProps, SettingsSection, SettingsItem } from './patterns/SettingsScreen'\n\nexport { EmptyState } from './patterns/EmptyState'\nexport type { EmptyStateProps } from './patterns/EmptyState'\n\nexport { ProfileHeader } from './patterns/ProfileHeader'\nexport type { ProfileHeaderProps } from './patterns/ProfileHeader'\n\nexport { AppHeader } from './patterns/AppHeader'\nexport type { AppHeaderProps, AppHeaderVariant } from './patterns/AppHeader'\n\nexport { BottomSheet } from './patterns/BottomSheet'\nexport type { BottomSheetProps } from './patterns/BottomSheet'\n\nexport { LoginScreen } from './patterns/LoginScreen'\nexport type { LoginScreenProps, AuthProvider } from './patterns/LoginScreen'\n\nexport { TabBar } from './patterns/TabBar'\nexport type { TabBarProps, TabBarItem } from './patterns/TabBar'\n\nexport { SearchBar } from './patterns/SearchBar'\nexport type { SearchBarProps } from './patterns/SearchBar'\n\nexport { FloatingActionButton } from './patterns/FloatingActionButton'\nexport type { FABProps } from './patterns/FloatingActionButton'\n\nexport { ActionSheet } from './patterns/ActionSheet'\nexport type { ActionSheetProps, ActionSheetItem } from './patterns/ActionSheet'\n\nexport { Skeleton } from './patterns/Skeleton'\nexport type { SkeletonProps } from './patterns/Skeleton'\n\nexport { NotificationBanner } from './patterns/NotificationBanner'\nexport type { NotificationBannerProps } from './patterns/NotificationBanner'\n\nexport { ProgressSteps } from './patterns/ProgressSteps'\nexport type { ProgressStepsProps } from './patterns/ProgressSteps'\n\nexport { SwipeableRow } from './patterns/SwipeableRow'\nexport type { SwipeableRowProps, SwipeAction } from './patterns/SwipeableRow'\n\nexport { MediaCard } from './patterns/MediaCard'\nexport type { MediaCardProps } from './patterns/MediaCard'\n\nexport { Carousel } from './patterns/Carousel'\nexport type { CarouselProps } from './patterns/Carousel'\n\nexport { PullToRefresh } from './patterns/PullToRefresh'\nexport type { PullToRefreshProps } from './patterns/PullToRefresh'\n\nexport { ProductCard } from './patterns/ProductCard'\nexport type { ProductCardProps } from './patterns/ProductCard'\n\nexport { PricingTable } from './patterns/PricingTable'\nexport type { PricingTableProps, PricingPlan } from './patterns/PricingTable'\n\nexport { CountdownBanner } from './patterns/CountdownBanner'\nexport type { CountdownBannerProps } from './patterns/CountdownBanner'\n\nexport { TestimonialCard } from './patterns/TestimonialCard'\nexport type { TestimonialCardProps } from './patterns/TestimonialCard'\n\nexport { ConfirmDialog } from './patterns/ConfirmDialog'\nexport type { ConfirmDialogProps } from './patterns/ConfirmDialog'\n\nexport { Chip, ChipGroup } from './patterns/Chip'\nexport type { ChipProps, ChipGroupProps } from './patterns/Chip'\n\nexport { OTPInput } from './patterns/OTPInput'\nexport type { OTPInputProps } from './patterns/OTPInput'\n\nexport { PasswordInput } from './patterns/PasswordInput'\nexport type { PasswordInputProps } from './patterns/PasswordInput'\n\nexport { AvatarGroup } from './patterns/AvatarGroup'\nexport type { AvatarGroupProps } from './patterns/AvatarGroup'\n\nexport { SwipeCards } from './patterns/SwipeCards'\nexport type { SwipeCardsProps, SwipeCardItem } from './patterns/SwipeCards'\n\nexport { GlassCard } from './patterns/GlassCard'\nexport type { GlassCardProps } from './patterns/GlassCard'\n","import { defaultConfig } from '@tamagui/config/v5'\nimport { createTamagui, type TamaguiInternalConfig } from 'tamagui'\n\nexport const blinkConfig: TamaguiInternalConfig = createTamagui({\n ...defaultConfig,\n})\n\nexport type BlinkConfig = typeof blinkConfig\n\ndeclare module 'tamagui' {\n interface TamaguiCustomConfig extends BlinkConfig {}\n}\n","import { Button as TamaguiButton, styled, type GetProps } from 'tamagui'\n\nexport const Button = styled(TamaguiButton, {\n borderWidth: 0,\n cursor: 'pointer',\n focusVisibleStyle: {\n outlineWidth: 2,\n outlineStyle: 'solid',\n outlineColor: '$color8',\n },\n\n variants: {\n variant: {\n default: {\n backgroundColor: '$color3',\n hoverStyle: { backgroundColor: '$color4' },\n pressStyle: { backgroundColor: '$color2', opacity: 0.8 },\n },\n primary: {\n backgroundColor: '$color9',\n color: '$color1',\n hoverStyle: { backgroundColor: '$color10' },\n pressStyle: { backgroundColor: '$color8', opacity: 0.9 },\n },\n outlined: {\n backgroundColor: 'transparent',\n borderWidth: 2,\n borderColor: '$color6',\n hoverStyle: { borderColor: '$color8' },\n pressStyle: { borderColor: '$color4', opacity: 0.8 },\n },\n transparent: {\n backgroundColor: 'transparent',\n hoverStyle: { backgroundColor: '$color2' },\n pressStyle: { backgroundColor: '$color1', opacity: 0.8 },\n },\n floating: {\n backgroundColor: '$color4',\n shadowColor: '$shadow2',\n shadowRadius: 5,\n shadowOffset: { height: 2, width: 0 },\n hoverStyle: { backgroundColor: '$color5' },\n pressStyle: { backgroundColor: '$color3', opacity: 0.9 },\n },\n destructive: {\n backgroundColor: '$red9',\n color: '$color1',\n hoverStyle: { backgroundColor: '$red10' },\n pressStyle: { backgroundColor: '$red8', opacity: 0.9 },\n },\n },\n size: {\n sm: { height: '$3', paddingHorizontal: '$3', borderRadius: '$3' },\n md: { height: '$4', paddingHorizontal: '$4', borderRadius: '$4' },\n lg: { height: '$5', paddingHorizontal: '$5', borderRadius: '$5' },\n },\n fullWidth: {\n true: { width: '100%' },\n },\n } as const,\n\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n})\n\nexport type ButtonProps = GetProps<typeof Button>\n","import { SizableText, styled, type GetProps } from 'tamagui'\n\nexport const BlinkText = styled(SizableText, {\n name: 'BlinkText',\n\n variants: {\n variant: {\n display: { size: '$10', fontWeight: '800' },\n h1: { size: '$9', fontWeight: '700' },\n h2: { size: '$8', fontWeight: '700' },\n h3: { size: '$7', fontWeight: '600' },\n h4: { size: '$6', fontWeight: '600' },\n body: { size: '$5', fontWeight: '400' },\n bodySmall: { size: '$4', fontWeight: '400' },\n caption: { size: '$3', fontWeight: '400', color: '$color10' },\n small: { size: '$2', fontWeight: '400', color: '$color9' },\n },\n muted: {\n true: { color: '$color9' },\n },\n secondary: {\n true: { color: '$color10' },\n },\n center: {\n true: { textAlign: 'center' },\n },\n bold: {\n true: { fontWeight: '700' },\n },\n } as const,\n\n defaultVariants: {\n variant: 'body',\n },\n})\n\nexport type BlinkTextProps = GetProps<typeof BlinkText>\n","import { styled, View, GetProps, withStaticProperties } from 'tamagui'\n\nconst CardFrame = styled(View, {\n name: 'BlinkCard',\n backgroundColor: '$color2',\n borderRadius: '$4',\n overflow: 'hidden',\n\n variants: {\n variant: {\n flat: {},\n elevated: {\n shadowColor: '$shadow2',\n shadowOffset: { width: 0, height: 2 },\n shadowRadius: 8,\n elevation: 3,\n },\n outlined: {\n borderWidth: 1,\n borderColor: '$color5',\n },\n },\n size: {\n sm: { borderRadius: '$3', padding: '$3' },\n md: { borderRadius: '$4', padding: '$4' },\n lg: { borderRadius: '$5', padding: '$5' },\n },\n pressable: {\n true: {\n pressStyle: { scale: 0.98, opacity: 0.9 },\n cursor: 'pointer',\n },\n },\n } as const,\n\n defaultVariants: {\n variant: 'flat',\n size: 'md',\n },\n})\n\nconst CardHeader = styled(View, { name: 'BlinkCardHeader', paddingBottom: '$3' })\nconst CardContent = styled(View, { name: 'BlinkCardContent' })\nconst CardFooter = styled(View, {\n name: 'BlinkCardFooter',\n paddingTop: '$3',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '$2',\n})\n\nexport type CardProps = GetProps<typeof CardFrame>\n\nexport const Card = withStaticProperties(CardFrame, {\n Header: CardHeader,\n Content: CardContent,\n Footer: CardFooter,\n})\n","import { Input as TamaguiInput, styled, View, SizableText, type GetProps } from 'tamagui'\n\nconst InputFrame = styled(View, {\n name: 'BlinkInputFrame',\n gap: '$1.5',\n})\n\nconst InputLabel = styled(SizableText, {\n name: 'BlinkInputLabel',\n size: '$4',\n fontWeight: '500',\n color: '$color11',\n})\n\nconst InputField = styled(TamaguiInput, {\n name: 'BlinkInput',\n height: 50,\n size: '$5',\n borderWidth: 0.5,\n borderColor: '$color5',\n borderRadius: '$4',\n backgroundColor: '$color1',\n placeholderTextColor: '$color8',\n\n focusVisibleStyle: {\n outlineWidth: 3,\n outlineStyle: 'solid',\n outlineColor: '$background04',\n outlineOffset: 1,\n borderWidth: 0.5,\n borderColor: '$color7',\n },\n\n variants: {\n hasError: {\n true: {\n borderColor: '$red9',\n focusVisibleStyle: { borderColor: '$red9' },\n },\n },\n variant: {\n default: {},\n filled: {\n backgroundColor: '$color2',\n borderColor: 'transparent',\n focusVisibleStyle: { borderColor: '$color7' },\n },\n },\n } as const,\n\n defaultVariants: { variant: 'default' },\n})\n\nconst InputError = styled(SizableText, { name: 'BlinkInputError', size: '$2', color: '$red10' })\nconst InputHint = styled(SizableText, { name: 'BlinkInputHint', size: '$2', color: '$color9' })\n\nexport type InputProps = GetProps<typeof InputField> & {\n label?: string\n error?: string\n hint?: string\n}\n\nexport function Input({ label, error, hint, ...props }: InputProps) {\n return (\n <InputFrame>\n {label && <InputLabel>{label}</InputLabel>}\n <InputField hasError={!!error} {...props} />\n {error && <InputError>{error}</InputError>}\n {hint && !error && <InputHint>{hint}</InputHint>}\n </InputFrame>\n )\n}\n","import { memo } from 'react'\nimport { Circle, Image, SizableText } from 'tamagui'\n\ntype SimpleSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nconst simpleSizes: Record<SimpleSize, number> = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 64,\n}\n\nfunction getSize(size: number | SimpleSize): number {\n if (typeof size === 'number') return size\n return simpleSizes[size] ?? 40\n}\n\nexport type AvatarProps = {\n uri?: string\n name?: string\n size?: number | SimpleSize\n}\n\nexport const Avatar = memo(({ uri, name, size: sizeIn = 'md' }: AvatarProps) => {\n const size = getSize(sizeIn)\n\n return (\n <Circle\n size={size}\n overflow=\"hidden\"\n backgroundColor=\"$color4\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n {uri ? (\n <Image\n source={{ uri }}\n width={size}\n height={size}\n objectFit=\"cover\"\n />\n ) : (\n <SizableText\n size=\"$3\"\n fontWeight=\"600\"\n color=\"$color11\"\n >\n {name ? name.split(' ').map(p => p[0]).join('').toUpperCase().slice(0, 2) : '?'}\n </SizableText>\n )}\n </Circle>\n )\n})\n","import { Separator, SizableText, XStack, styled } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport const H1 = styled(SizableText, {\n name: 'BlinkH1',\n role: 'heading',\n fontFamily: '$heading',\n size: '$10',\n fontWeight: '700',\n})\n\nexport const H2 = styled(SizableText, {\n name: 'BlinkH2',\n role: 'heading',\n fontFamily: '$heading',\n size: '$9',\n fontWeight: '700',\n})\n\nexport const H3 = styled(SizableText, {\n name: 'BlinkH3',\n role: 'heading',\n fontFamily: '$heading',\n size: '$8',\n fontWeight: '600',\n})\n\nexport const H4 = styled(SizableText, {\n name: 'BlinkH4',\n role: 'heading',\n fontFamily: '$heading',\n size: '$6',\n fontWeight: '600',\n})\n\nexport const H5 = styled(SizableText, {\n name: 'BlinkH5',\n role: 'heading',\n fontFamily: '$heading',\n size: '$5',\n fontWeight: '500',\n})\n\nexport const H6 = styled(SizableText, {\n name: 'BlinkH6',\n role: 'heading',\n fontFamily: '$heading',\n size: '$4',\n fontWeight: '500',\n})\n\nexport const SubHeading = styled(SizableText, {\n name: 'BlinkSubHeading',\n size: '$5',\n color: '$color10',\n fontWeight: '300',\n $lg: { size: '$6' },\n})\n\nexport function SepHeading({ children }: { children: ReactNode }) {\n return (\n <XStack marginTop=\"$6\" marginBottom=\"$4\" alignItems=\"center\" gap=\"$6\">\n <H3 size=\"$4\" color=\"$color10\">\n {children}\n </H3>\n <Separator opacity={0.5} />\n </XStack>\n )\n}\n","import { styled, YStack } from 'tamagui'\n\nexport const PageContainer = styled(YStack, {\n name: 'BlinkPageContainer',\n position: 'relative',\n marginHorizontal: 'auto',\n flex: 1,\n flexBasis: 'auto',\n paddingHorizontal: '$4',\n width: '100%',\n minWidth: 380,\n $md: { maxWidth: 760 },\n $lg: { maxWidth: 860 },\n $xl: { maxWidth: 1140 },\n})\n\nexport const PageMainContainer = styled(PageContainer, {\n name: 'BlinkPageMainContainer',\n role: 'main',\n})\n","import { useState, useEffect, type ReactNode } from 'react'\nimport { AlertDialog, Button, XStack, YStack } from 'tamagui'\n\ntype DialogState = {\n type: 'error' | 'confirm' | null\n title: string\n description: string\n resolve?: (value: boolean) => void\n}\n\nlet globalShowDialog: ((\n state: Omit<DialogState, 'resolve'> & { resolve?: (value: boolean) => void }\n) => void) | null = null\n\nexport function DialogProvider({ children }: { children: ReactNode }) {\n const [state, setState] = useState<DialogState>({\n type: null,\n title: '',\n description: '',\n })\n\n useEffect(() => {\n globalShowDialog = (newState) =>\n setState({ ...newState, resolve: newState.resolve } as DialogState)\n return () => {\n globalShowDialog = null\n }\n }, [])\n\n const handleClose = (confirmed: boolean) => {\n if (!state.resolve) return\n const resolve = state.resolve\n setState({ type: null, title: '', description: '' })\n resolve(confirmed)\n }\n\n return (\n <>\n {children}\n <AlertDialog\n open={state.type !== null}\n onOpenChange={(open) => {\n if (!open && state.type !== null) handleClose(false)\n }}\n >\n <AlertDialog.Portal>\n <AlertDialog.Overlay\n key=\"overlay\"\n opacity={0.5}\n enterStyle={{ opacity: 0 }}\n exitStyle={{ opacity: 0 }}\n />\n <AlertDialog.Content\n bordered\n elevate\n key=\"content\"\n enterStyle={{ x: 0, y: -20, opacity: 0, scale: 0.9 }}\n exitStyle={{ x: 0, y: 10, opacity: 0, scale: 0.95 }}\n x={0}\n scale={1}\n opacity={1}\n y={0}\n width=\"90%\"\n maxWidth={400}\n >\n <YStack gap=\"$4\">\n <AlertDialog.Title size=\"$6\">{state.title}</AlertDialog.Title>\n <AlertDialog.Description size=\"$3\" color=\"$color11\">\n {state.description}\n </AlertDialog.Description>\n <XStack gap=\"$3\" justifyContent=\"flex-end\">\n {state.type === 'confirm' ? (\n <>\n <Button onPress={() => handleClose(false)}>Cancel</Button>\n <Button theme=\"blue\" onPress={() => handleClose(true)}>\n Confirm\n </Button>\n </>\n ) : (\n <Button theme=\"blue\" onPress={() => handleClose(false)}>\n OK\n </Button>\n )}\n </XStack>\n </YStack>\n </AlertDialog.Content>\n </AlertDialog.Portal>\n </AlertDialog>\n </>\n )\n}\n\nexport const showError = (error: unknown, title = 'Error') => {\n let description = 'An unexpected error occurred'\n if (error instanceof Error) description = error.message\n else if (typeof error === 'string') description = error\n else if (error && typeof error === 'object' && 'message' in error)\n description = String(error.message)\n\n if (globalShowDialog) globalShowDialog({ type: 'error', title, description })\n else console.error(`${title}: ${description}`)\n}\n\nexport const dialogConfirm = async (props: {\n title?: string\n description?: string\n}): Promise<boolean> => {\n const { title = 'Confirm', description = 'Are you sure?' } = props\n if (!globalShowDialog) {\n console.error('DialogProvider not mounted')\n return false\n }\n return new Promise<boolean>((resolve) => {\n globalShowDialog!({ type: 'confirm', title, description, resolve })\n })\n}\n","import { styled, View } from 'tamagui'\n\nexport const Pressable = styled(View, {\n name: 'BlinkPressable',\n hitSlop: 10,\n pressStyle: { opacity: 0.5 },\n})\n","import { styled, Image as TamaguiImage } from 'tamagui'\n\nexport const Image = styled(TamaguiImage, {\n name: 'BlinkImage',\n})\n","import { styled, SizableText, View } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nconst BadgeFrame = styled(View, {\n name: 'BlinkBadge',\n paddingHorizontal: '$2',\n paddingVertical: '$1',\n borderRadius: '$10',\n backgroundColor: '$color3',\n alignSelf: 'flex-start',\n variants: {\n variant: {\n default: { backgroundColor: '$color3' },\n success: { backgroundColor: '$green3' },\n warning: { backgroundColor: '$yellow3' },\n error: { backgroundColor: '$red3' },\n info: { backgroundColor: '$blue3' },\n },\n } as const,\n defaultVariants: { variant: 'default' },\n})\n\nconst BadgeText = styled(SizableText, {\n name: 'BlinkBadgeText',\n size: '$2',\n fontWeight: '600',\n color: '$color11',\n})\n\nexport type BadgeProps = {\n children: ReactNode\n variant?: 'default' | 'success' | 'warning' | 'error' | 'info'\n}\n\nexport function Badge({ children, variant = 'default' }: BadgeProps) {\n return (\n <BadgeFrame variant={variant}>\n <BadgeText>{children}</BadgeText>\n </BadgeFrame>\n )\n}\n","import { SizableText } from 'tamagui'\n\nexport const ICONS = {\n home: '\\u2302', search: '\\u2315', back: '\\u2039', forward: '\\u203A',\n close: '\\u2715', menu: '\\u2630', more: '\\u22EF', plus: '+',\n minus: '\\u2212', check: '\\u2713', star: '\\u2605', starOutline: '\\u2606',\n heart: '\\u2665', heartOutline: '\\u2661', share: '\\u2934', edit: '\\u270E',\n trash: '\\u232B', copy: '\\u2398', chat: '\\u{1F4AC}', mail: '\\u2709',\n bell: '\\u{1F514}', bellOff: '\\u{1F515}', send: '\\u27A4', play: '\\u25B6',\n pause: '\\u23F8', camera: '\\u{1F4F7}', image: '\\u{1F5BC}', info: '\\u2139',\n warning: '\\u26A0', error: '\\u2715', success: '\\u2713', loading: '\\u27F3',\n user: '\\u{1F464}', users: '\\u{1F465}', settings: '\\u2699',\n lock: '\\u{1F512}', unlock: '\\u{1F513}',\n arrowUp: '\\u2191', arrowDown: '\\u2193', arrowLeft: '\\u2190', arrowRight: '\\u2192',\n chevronUp: '\\u2303', chevronDown: '\\u2304', chevronLeft: '\\u2039', chevronRight: '\\u203A',\n} as const\n\nexport type IconName = keyof typeof ICONS\nexport type IconProps = { name: IconName; size?: number; color?: string }\n\nexport function Icon({ name, size = 20, color = '$color12' }: IconProps) {\n return (\n <SizableText fontSize={size} lineHeight={size} color={color} textAlign=\"center\" width={size} height={size}>\n {ICONS[name]}\n </SizableText>\n )\n}\n","import { type ReactNode, useState } from 'react'\nimport { Separator, SizableText, XStack, YStack } from 'tamagui'\n\nexport type BlinkAccordionItem = { id: string; title: string; content: ReactNode }\nexport type BlinkAccordionProps = {\n items: BlinkAccordionItem[]\n defaultOpen?: string[]\n allowMultiple?: boolean\n}\n\nexport function BlinkAccordion({ items, defaultOpen, allowMultiple = false }: BlinkAccordionProps) {\n const [openIds, setOpenIds] = useState<string[]>(defaultOpen ?? [])\n const toggle = (id: string) => {\n setOpenIds(prev => {\n if (prev.includes(id)) return prev.filter(i => i !== id)\n return allowMultiple ? [...prev, id] : [id]\n })\n }\n return (\n <YStack>\n {items.map((item, index) => {\n const isOpen = openIds.includes(item.id)\n return (\n <YStack key={item.id}>\n {index > 0 && <Separator borderColor=\"$borderColor\" />}\n <XStack\n paddingVertical=\"$3\" paddingHorizontal=\"$2\"\n justifyContent=\"space-between\" alignItems=\"center\"\n pressStyle={{ opacity: 0.7 }} onPress={() => toggle(item.id)} cursor=\"pointer\"\n >\n <SizableText size=\"$4\" fontWeight=\"600\">{item.title}</SizableText>\n <SizableText size=\"$3\" color=\"$color10\">{isOpen ? '\\u2303' : '\\u2304'}</SizableText>\n </XStack>\n {isOpen && <YStack paddingHorizontal=\"$2\" paddingBottom=\"$3\">{item.content}</YStack>}\n </YStack>\n )\n })}\n </YStack>\n )\n}\n","import { useState } from 'react'\nimport { ScrollView } from 'react-native'\nimport { SizableText, XStack, YStack } from 'tamagui'\n\nexport type BlinkTabItem = { key: string; label: string }\nexport type BlinkTabsProps = {\n tabs: BlinkTabItem[]\n activeTab?: string\n onTabChange?: (key: string) => void\n variant?: 'underline' | 'pill'\n}\n\nexport function BlinkTabs({ tabs, activeTab, onTabChange, variant = 'underline' }: BlinkTabsProps) {\n const [internalActive, setInternalActive] = useState(tabs[0]?.key ?? '')\n const current = activeTab ?? internalActive\n const handlePress = (key: string) => {\n if (!activeTab) setInternalActive(key)\n onTabChange?.(key)\n }\n return (\n <YStack>\n <ScrollView horizontal showsHorizontalScrollIndicator={false}>\n <XStack gap=\"$2\" paddingHorizontal=\"$2\" paddingBottom=\"$2\">\n {tabs.map(tab => {\n const isActive = tab.key === current\n return (\n <YStack\n key={tab.key}\n paddingVertical=\"$2\" paddingHorizontal=\"$3\"\n borderRadius={variant === 'pill' ? '$4' : '$0'}\n backgroundColor={variant === 'pill' && isActive ? '$color9' : 'transparent'}\n borderBottomWidth={variant === 'underline' ? 2 : 0}\n borderBottomColor={variant === 'underline' && isActive ? '$color9' : 'transparent'}\n pressStyle={{ opacity: 0.7 }} onPress={() => handlePress(tab.key)} cursor=\"pointer\"\n >\n <SizableText\n size=\"$3\" fontWeight={isActive ? '600' : '400'}\n color={variant === 'pill' && isActive ? '$color1' : isActive ? '$color12' : '$color10'}\n >\n {tab.label}\n </SizableText>\n </YStack>\n )\n })}\n </XStack>\n </ScrollView>\n </YStack>\n )\n}\n","import { SizableText, XStack } from 'tamagui'\n\nexport type BlinkToggleOption = { value: string; label: string }\nexport type BlinkToggleGroupProps = {\n options: BlinkToggleOption[]\n value: string\n onValueChange: (value: string) => void\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizeMap = { sm: '$2' as const, md: '$3' as const, lg: '$4' as const }\n\nexport function BlinkToggleGroup({ options, value, onValueChange, size = 'md' }: BlinkToggleGroupProps) {\n const textSize = sizeMap[size]\n return (\n <XStack borderRadius=\"$4\" overflow=\"hidden\" backgroundColor=\"$color2\">\n {options.map((option, index) => {\n const isActive = option.value === value\n return (\n <XStack\n key={option.value} flex={1} justifyContent=\"center\" alignItems=\"center\"\n paddingVertical=\"$2\" paddingHorizontal=\"$3\"\n backgroundColor={isActive ? '$color9' : '$color2'}\n borderLeftWidth={index > 0 ? 1 : 0}\n borderLeftColor={isActive ? '$color9' : '$color4'}\n pressStyle={{ opacity: 0.7 }} onPress={() => onValueChange(option.value)} cursor=\"pointer\"\n >\n <SizableText size={textSize} fontWeight={isActive ? '600' : '400'} color={isActive ? '$color1' : '$color11'}>\n {option.label}\n </SizableText>\n </XStack>\n )\n })}\n </XStack>\n )\n}\n","import { useState, useCallback, useEffect, createContext, useContext, type ReactNode } from 'react'\nimport { SizableText, XStack, YStack } from 'tamagui'\n\nexport type BlinkToastVariant = 'default' | 'success' | 'error' | 'warning'\nexport type BlinkToastData = {\n id: string; title: string; message?: string\n variant?: BlinkToastVariant; duration?: number\n}\nexport type BlinkToastOptions = { message?: string; variant?: BlinkToastVariant; duration?: number }\nexport type BlinkToastContextType = {\n show: (title: string, options?: BlinkToastOptions) => void\n}\n\nconst ToastContext = createContext<BlinkToastContextType | null>(null)\n\nconst variantStyles: Record<BlinkToastVariant, { bg: string; border: string; icon: string }> = {\n default: { bg: '$color3', border: '$color6', icon: 'ℹ' },\n success: { bg: '$green2', border: '$green7', icon: '✓' },\n error: { bg: '$red2', border: '$red7', icon: '✕' },\n warning: { bg: '$yellow2', border: '$yellow7', icon: '!' },\n}\n\nlet globalToastShow: BlinkToastContextType['show'] | null = null\n\nexport const toast = (title: string, options?: BlinkToastOptions | BlinkToastVariant) => {\n const opts: BlinkToastOptions | undefined = typeof options === 'string' ? { variant: options } : options\n if (globalToastShow) globalToastShow(title, opts)\n else console.warn('BlinkToastProvider not mounted')\n}\n\nexport function BlinkToastProvider({ children }: { children: ReactNode }) {\n const [toasts, setToasts] = useState<BlinkToastData[]>([])\n\n const show = useCallback((title: string, options?: BlinkToastOptions) => {\n const id = Math.random().toString(36).slice(2, 9)\n const entry: BlinkToastData = {\n id, title,\n message: options?.message,\n variant: options?.variant ?? 'default',\n duration: options?.duration ?? 3000,\n }\n setToasts(prev => [...prev, entry])\n setTimeout(() => setToasts(prev => prev.filter(t => t.id !== id)), entry.duration)\n }, [])\n\n useEffect(() => { globalToastShow = show; return () => { globalToastShow = null } }, [show])\n\n const dismiss = useCallback((id: string) => {\n setToasts(prev => prev.filter(t => t.id !== id))\n }, [])\n\n return (\n <ToastContext.Provider value={{ show }}>\n {children}\n <YStack\n position=\"absolute\" top={50} left={0} right={0}\n alignItems=\"center\" gap=\"$2\" pointerEvents=\"box-none\" zIndex={100000}\n paddingHorizontal=\"$4\"\n >\n {toasts.map(t => {\n const style = variantStyles[t.variant ?? 'default']\n return (\n <XStack\n key={t.id}\n width=\"100%\"\n maxWidth={400}\n backgroundColor={style.bg}\n borderWidth={1}\n borderColor={style.border}\n borderRadius=\"$4\"\n paddingHorizontal=\"$4\"\n paddingVertical=\"$3\"\n gap=\"$3\"\n alignItems=\"flex-start\"\n enterStyle={{ opacity: 0, y: -20, scale: 0.95 }}\n exitStyle={{ opacity: 0, y: -20, scale: 0.95 }}\n opacity={1}\n y={0}\n scale={1}\n animation=\"quick\"\n pointerEvents=\"auto\"\n elevation={4}\n >\n <SizableText size=\"$4\" fontWeight=\"700\" marginTop=\"$0.5\">{style.icon}</SizableText>\n <YStack flex={1} gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"600\" color=\"$color12\">{t.title}</SizableText>\n {t.message && (\n <SizableText size=\"$3\" color=\"$color10\">{t.message}</SizableText>\n )}\n </YStack>\n <SizableText\n size=\"$3\" color=\"$color8\" fontWeight=\"600\"\n pressStyle={{ opacity: 0.5 }}\n onPress={() => dismiss(t.id)}\n cursor=\"pointer\"\n marginTop=\"$0.5\"\n >\n ✕\n </SizableText>\n </XStack>\n )\n })}\n </YStack>\n </ToastContext.Provider>\n )\n}\n\nexport function useBlinkToast() {\n const ctx = useContext(ToastContext)\n if (!ctx) throw new Error('useBlinkToast must be used within BlinkToastProvider')\n return ctx\n}\n","import { type ReactNode } from 'react'\nimport { SizableText, YStack } from 'tamagui'\n\nexport type FormFieldProps = {\n label?: string; error?: string; helperText?: string; required?: boolean; children: ReactNode\n}\n\nexport function FormField({ label, error, helperText, required, children }: FormFieldProps) {\n return (\n <YStack gap=\"$1.5\">\n {label && (\n <SizableText size=\"$3\" fontWeight=\"600\" color=\"$color11\">\n {label}{required && <SizableText color=\"$red9\"> *</SizableText>}\n </SizableText>\n )}\n {children}\n {helperText && !error && <SizableText size=\"$2\" color=\"$color9\">{helperText}</SizableText>}\n {error && <SizableText size=\"$2\" color=\"$red9\">{error}</SizableText>}\n </YStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { Popover, SizableText } from 'tamagui'\n\nexport type TooltipProps = { content: string; children: ReactNode; side?: 'top' | 'bottom' | 'left' | 'right' }\n\nexport function BlinkTooltip({ content, children, side = 'top' }: TooltipProps) {\n return (\n <Popover size=\"$2\" placement={side}>\n <Popover.Trigger asChild>{children}</Popover.Trigger>\n <Popover.Content\n backgroundColor=\"$color11\" borderRadius=\"$2\"\n paddingHorizontal=\"$2.5\" paddingVertical=\"$1.5\" elevate\n enterStyle={{ opacity: 0, y: side === 'bottom' ? -4 : 4 }}\n exitStyle={{ opacity: 0, y: side === 'bottom' ? -4 : 4 }}\n opacity={1} y={0} animation=\"quick\"\n >\n <Popover.Arrow backgroundColor=\"$color11\" size=\"$1\" />\n <SizableText size=\"$2\" color=\"$color1\">{content}</SizableText>\n </Popover.Content>\n </Popover>\n )\n}\n","import { SizableText, YStack } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type StepPageProps = {\n title: string\n description?: string\n children: ReactNode\n bottom?: ReactNode\n}\n\nexport function StepPageLayout({ title, description, children, bottom }: StepPageProps) {\n return (\n <YStack flex={1} padding=\"$4\" maxWidth={500} marginHorizontal=\"auto\" width=\"100%\">\n <YStack gap=\"$5\">\n <YStack gap=\"$2\">\n <SizableText size=\"$8\" fontWeight=\"700\">{title}</SizableText>\n {description && (\n <SizableText size=\"$5\" fontWeight=\"400\" color=\"$color10\">{description}</SizableText>\n )}\n </YStack>\n </YStack>\n <YStack paddingTop=\"$5\" gap=\"$4\">{children}</YStack>\n {bottom && <YStack paddingTop=\"$4\">{bottom}</YStack>}\n </YStack>\n )\n}\n","import { styled, YStack } from 'tamagui'\n\nexport const ScreenLayout = styled(YStack, {\n name: 'BlinkScreenLayout',\n flex: 1,\n backgroundColor: '$background',\n\n variants: {\n padded: {\n true: { padding: '$4' },\n },\n centered: {\n true: { alignItems: 'center', justifyContent: 'center' },\n },\n safe: {\n true: { paddingTop: '$6' },\n },\n } as const,\n})\n","import { SizableText, YStack, type GetProps } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type SectionProps = {\n title?: string\n description?: string\n children: ReactNode\n gap?: GetProps<typeof YStack>['gap']\n}\n\nexport function Section({ title, description, children, gap = '$3' }: SectionProps) {\n return (\n <YStack gap={gap}>\n {title && (\n <YStack gap=\"$1\">\n <SizableText size=\"$5\" fontWeight=\"600\" color=\"$color12\">{title}</SizableText>\n {description && (\n <SizableText size=\"$3\" color=\"$color9\">{description}</SizableText>\n )}\n </YStack>\n )}\n {children}\n </YStack>\n )\n}\n","import { styled, SizableText, XStack, YStack, View } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nconst ListItemFrame = styled(XStack, {\n name: 'BlinkListItem',\n alignItems: 'center',\n gap: '$3',\n padding: '$3',\n borderRadius: '$3',\n\n variants: {\n pressable: {\n true: {\n cursor: 'pointer',\n hoverStyle: { backgroundColor: '$color2' },\n pressStyle: { backgroundColor: '$color3', opacity: 0.9 },\n },\n },\n } as const,\n})\n\nexport type ListItemProps = {\n icon?: ReactNode\n title: string\n subtitle?: string\n right?: ReactNode\n onPress?: () => void\n}\n\nexport function ListItem({ icon, title, subtitle, right, onPress }: ListItemProps) {\n return (\n <ListItemFrame pressable={!!onPress} onPress={onPress}>\n {icon && <View>{icon}</View>}\n <YStack flex={1} gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"500\" color=\"$color12\">{title}</SizableText>\n {subtitle && <SizableText size=\"$2\" color=\"$color9\">{subtitle}</SizableText>}\n </YStack>\n {right}\n </ListItemFrame>\n )\n}\n","import { Separator, SizableText, XStack } from 'tamagui'\n\nexport type DividerProps = {\n label?: string\n}\n\nexport function Divider({ label }: DividerProps) {\n if (!label) return <Separator borderColor=\"$color4\" />\n return (\n <XStack alignItems=\"center\" gap=\"$3\">\n <Separator flex={1} borderColor=\"$color4\" />\n <SizableText size=\"$2\" color=\"$color9\">{label}</SizableText>\n <Separator flex={1} borderColor=\"$color4\" />\n </XStack>\n )\n}\n","import { YStack } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type KeyboardStickyFooterProps = {\n children: ReactNode\n offset?: number\n}\n\nexport function KeyboardStickyFooter({ children, offset }: KeyboardStickyFooterProps) {\n return (\n <YStack maxWidth={500} alignSelf=\"center\" paddingTop=\"$8\" paddingBottom=\"$4\" style={{ paddingBottom: offset }}>\n {children}\n </YStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { YStack } from 'tamagui'\n\nexport type SafeAreaProps = { children: ReactNode; edges?: ('top' | 'bottom' | 'left' | 'right')[] }\n\nexport function SafeArea({ children, edges = ['top', 'bottom'] }: SafeAreaProps) {\n return (\n <YStack\n flex={1} backgroundColor=\"$background\"\n paddingTop={edges.includes('top') ? '$6' : undefined}\n paddingBottom={edges.includes('bottom') ? '$6' : undefined}\n paddingLeft={edges.includes('left') ? '$4' : undefined}\n paddingRight={edges.includes('right') ? '$4' : undefined}\n >\n {children}\n </YStack>\n )\n}\n","import { type ReactNode, Children } from 'react'\nimport { XStack, YStack } from 'tamagui'\n\nexport type GridProps = { children: ReactNode; columns?: number; gap?: string }\nexport type ContainerProps = { children: ReactNode; maxWidth?: number; centered?: boolean; padding?: string }\n\nexport function Grid({ children, columns = 2, gap = '$3' }: GridProps) {\n const items = Children.toArray(children)\n const rows: ReactNode[][] = []\n for (let i = 0; i < items.length; i += columns) {\n rows.push(items.slice(i, i + columns))\n }\n return (\n <YStack gap={gap as any}>\n {rows.map((row, ri) => (\n <XStack key={ri} gap={gap as any}>\n {row.map((item, ci) => (\n <YStack key={ci} flex={1}>{item}</YStack>\n ))}\n {row.length < columns && Array.from({ length: columns - row.length }).map((_, i) => (\n <YStack key={`pad-${i}`} flex={1} />\n ))}\n </XStack>\n ))}\n </YStack>\n )\n}\n\nexport function Container({ children, maxWidth = 500, centered = true, padding = '$4' }: ContainerProps) {\n return (\n <YStack width=\"100%\" maxWidth={maxWidth} alignSelf={centered ? 'center' : undefined} padding={padding as any}>\n {children}\n </YStack>\n )\n}\n","import { useState, useEffect, type ReactNode } from 'react'\nimport { Button, SizableText, XStack, YStack, ScrollView } from 'tamagui'\n\nexport type PlanOption = {\n id: string\n name: string\n price: string\n period: string\n pricePerWeek?: string\n savings?: string\n popular?: boolean\n trial?: string\n features?: string[]\n}\n\nexport type PaywallScreenProps = {\n title?: string\n subtitle?: string\n features?: string[]\n plans: PlanOption[]\n selectedPlan?: string\n onSelectPlan?: (planId: string) => void\n onContinue?: () => void\n onClose?: () => void\n onRestore?: () => void\n onTerms?: () => void\n onPrivacy?: () => void\n continueLabel?: string\n reassurance?: string\n hero?: ReactNode\n socialProof?: string\n countdownMinutes?: number\n badge?: string\n}\n\nfunction useCountdown(minutes?: number) {\n const [seconds, setSeconds] = useState((minutes ?? 0) * 60)\n useEffect(() => {\n if (!minutes) return\n setSeconds(minutes * 60)\n const id = setInterval(() => setSeconds((s) => (s > 0 ? s - 1 : 0)), 1000)\n return () => clearInterval(id)\n }, [minutes])\n const mm = String(Math.floor(seconds / 60)).padStart(2, '0')\n const ss = String(seconds % 60).padStart(2, '0')\n return { display: `${mm}:${ss}`, expired: seconds <= 0 }\n}\n\nfunction PlanCard({ plan, selected, onPress }: { plan: PlanOption; selected: boolean; onPress: () => void }) {\n return (\n <YStack\n flex={1}\n padding=\"$3\"\n borderRadius=\"$5\"\n borderWidth={2}\n borderColor={selected ? '$color9' : '$color5'}\n backgroundColor={selected ? '$color3' : '$color1'}\n pressStyle={{ scale: 0.97, opacity: 0.9 }}\n animation=\"quick\"\n onPress={onPress}\n cursor=\"pointer\"\n position=\"relative\"\n gap=\"$1.5\"\n alignItems=\"center\"\n >\n {plan.popular && (\n <YStack position=\"absolute\" top={-10} backgroundColor=\"$color9\" paddingHorizontal=\"$2\" paddingVertical={2} borderRadius=\"$10\">\n <SizableText size=\"$1\" color=\"white\" fontWeight=\"700\">BEST VALUE</SizableText>\n </YStack>\n )}\n {plan.savings && (\n <YStack position=\"absolute\" top={plan.popular ? -24 : -10} right={6} backgroundColor=\"$green9\" paddingHorizontal=\"$1.5\" paddingVertical={2} borderRadius=\"$10\">\n <SizableText size=\"$1\" color=\"white\" fontWeight=\"700\">{plan.savings}</SizableText>\n </YStack>\n )}\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"$color11\" paddingTop={plan.popular ? '$1' : 0}>\n {plan.name}\n </SizableText>\n <SizableText size=\"$7\" fontWeight=\"800\">{plan.price}</SizableText>\n <SizableText size=\"$2\" color=\"$color9\">/{plan.period}</SizableText>\n {plan.pricePerWeek && <SizableText size=\"$1\" color=\"$color10\">{plan.pricePerWeek}</SizableText>}\n {plan.trial && (\n <YStack backgroundColor=\"$green3\" paddingHorizontal=\"$2\" paddingVertical={2} borderRadius=\"$10\" marginTop=\"$1\">\n <SizableText size=\"$1\" color=\"$green9\" fontWeight=\"700\">{plan.trial}</SizableText>\n </YStack>\n )}\n </YStack>\n )\n}\n\nexport function PaywallScreen({\n title = 'Unlock Premium',\n subtitle,\n features = [],\n plans,\n selectedPlan,\n onSelectPlan,\n onContinue,\n onClose,\n onRestore,\n onTerms,\n onPrivacy,\n continueLabel = 'Continue',\n reassurance = 'Cancel anytime',\n hero,\n socialProof,\n countdownMinutes,\n badge,\n}: PaywallScreenProps) {\n const selected = selectedPlan ?? plans.find((p) => p.popular)?.id ?? plans[0]?.id\n const countdown = useCountdown(countdownMinutes)\n\n return (\n <YStack flex={1} backgroundColor=\"$background\">\n {onClose && (\n <XStack position=\"absolute\" top=\"$4\" right=\"$4\" zIndex={10}>\n <Button size=\"$3\" circular chromeless onPress={onClose} pressStyle={{ opacity: 0.6 }}>\n <SizableText size=\"$5\" color=\"$color9\">✕</SizableText>\n </Button>\n </XStack>\n )}\n\n <ScrollView flex={1} contentContainerStyle={{ paddingBottom: 220 }}>\n <YStack padding=\"$4\" gap=\"$4\" paddingTop=\"$8\">\n {hero && <YStack alignItems=\"center\" paddingVertical=\"$3\">{hero}</YStack>}\n\n {badge && (\n <XStack justifyContent=\"center\">\n <YStack backgroundColor=\"$color9\" paddingHorizontal=\"$3\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$2\" color=\"white\" fontWeight=\"700\">{badge}</SizableText>\n </YStack>\n </XStack>\n )}\n\n <YStack gap=\"$1.5\" alignItems=\"center\">\n <SizableText size=\"$9\" fontWeight=\"800\" textAlign=\"center\">{title}</SizableText>\n {subtitle && <SizableText size=\"$4\" color=\"$color10\" textAlign=\"center\">{subtitle}</SizableText>}\n {socialProof && <SizableText size=\"$3\" color=\"$color9\" fontWeight=\"600\" textAlign=\"center\">{socialProof}</SizableText>}\n </YStack>\n\n {countdownMinutes && !countdown.expired && (\n <XStack justifyContent=\"center\" padding=\"$2\" backgroundColor=\"$red3\" borderRadius=\"$4\" alignSelf=\"center\" paddingHorizontal=\"$4\" gap=\"$2\" alignItems=\"center\">\n <SizableText size=\"$2\" color=\"$red9\" fontWeight=\"600\">Offer ends in</SizableText>\n <SizableText size=\"$5\" color=\"$red9\" fontWeight=\"800\" fontFamily=\"$mono\">{countdown.display}</SizableText>\n </XStack>\n )}\n\n {features.length > 0 && (\n <YStack gap=\"$2.5\" paddingHorizontal=\"$2\">\n {features.map((f, i) => (\n <XStack key={i} gap=\"$2.5\" alignItems=\"center\">\n <SizableText size=\"$4\" color=\"$green9\">✓</SizableText>\n <SizableText size=\"$4\" color=\"$color11\" flex={1}>{f}</SizableText>\n </XStack>\n ))}\n </YStack>\n )}\n\n <XStack gap=\"$3\" paddingTop=\"$1\">\n {plans.map((plan) => (\n <PlanCard key={plan.id} plan={plan} selected={selected === plan.id} onPress={() => onSelectPlan?.(plan.id)} />\n ))}\n </XStack>\n </YStack>\n </ScrollView>\n\n <YStack\n position=\"absolute\"\n bottom={0}\n left={0}\n right={0}\n padding=\"$4\"\n paddingBottom=\"$6\"\n backgroundColor=\"$background\"\n borderTopWidth={1}\n borderTopColor=\"$color4\"\n gap=\"$2.5\"\n >\n <Button\n size=\"$5\"\n backgroundColor=\"$color9\"\n color=\"$color1\"\n onPress={onContinue}\n pressStyle={{ backgroundColor: '$color8', scale: 0.98 }}\n animation=\"quick\"\n borderRadius=\"$10\"\n fontWeight=\"700\"\n >\n {continueLabel}\n </Button>\n {reassurance && <SizableText size=\"$2\" color=\"$color9\" textAlign=\"center\">{reassurance}</SizableText>}\n <XStack justifyContent=\"center\" gap=\"$3\">\n {onRestore && <SizableText size=\"$2\" color=\"$color8\" onPress={onRestore} pressStyle={{ opacity: 0.6 }}>Restore</SizableText>}\n {onTerms && <SizableText size=\"$2\" color=\"$color8\" onPress={onTerms} pressStyle={{ opacity: 0.6 }}>Terms</SizableText>}\n {onPrivacy && <SizableText size=\"$2\" color=\"$color8\" onPress={onPrivacy} pressStyle={{ opacity: 0.6 }}>Privacy</SizableText>}\n </XStack>\n </YStack>\n </YStack>\n )\n}\n","import { useState } from 'react'\nimport { Button, SizableText, XStack, YStack, Circle } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type OnboardingStep = {\n title: string\n description: string\n icon?: ReactNode\n}\n\nexport type OnboardingCarouselProps = {\n steps: OnboardingStep[]\n onComplete?: () => void\n onSkip?: () => void\n completeLabel?: string\n skipLabel?: string\n nextLabel?: string\n}\n\nexport function OnboardingCarousel({\n steps,\n onComplete,\n onSkip,\n completeLabel = 'Get Started',\n skipLabel = 'Skip',\n nextLabel = 'Next',\n}: OnboardingCarouselProps) {\n const [current, setCurrent] = useState(0)\n const isLast = current === steps.length - 1\n const step = steps[current]\n\n return (\n <YStack flex={1} backgroundColor=\"$background\" padding=\"$4\" justifyContent=\"space-between\">\n <XStack justifyContent=\"flex-end\" paddingTop=\"$4\">\n {!isLast && onSkip && (\n <Button chromeless onPress={onSkip}>\n <SizableText size=\"$4\" color=\"$color9\">\n {skipLabel}\n </SizableText>\n </Button>\n )}\n </XStack>\n\n <YStack flex={1} alignItems=\"center\" justifyContent=\"center\" gap=\"$5\" paddingHorizontal=\"$4\">\n {step?.icon && (\n <Circle size={120} backgroundColor=\"$color2\" alignItems=\"center\" justifyContent=\"center\">\n {step.icon}\n </Circle>\n )}\n <YStack gap=\"$3\" alignItems=\"center\">\n <SizableText size=\"$9\" fontWeight=\"700\" textAlign=\"center\">\n {step?.title}\n </SizableText>\n <SizableText size=\"$4\" color=\"$color10\" textAlign=\"center\" maxWidth={300}>\n {step?.description}\n </SizableText>\n </YStack>\n </YStack>\n\n <YStack gap=\"$3\" paddingBottom=\"$2\">\n <XStack justifyContent=\"center\" gap=\"$2\">\n {steps.map((_, i) => (\n <Circle\n key={i}\n size={8}\n backgroundColor={i === current ? '$color9' : '$color4'}\n animation=\"quick\"\n />\n ))}\n </XStack>\n <Button\n size=\"$5\"\n backgroundColor=\"$color9\"\n color=\"$color1\"\n borderRadius=\"$5\"\n hoverStyle={{ backgroundColor: '$color10' }}\n pressStyle={{ backgroundColor: '$color8' }}\n onPress={() => (isLast ? onComplete?.() : setCurrent((c) => c + 1))}\n >\n {isLast ? completeLabel : nextLabel}\n </Button>\n </YStack>\n </YStack>\n )\n}\n","import { SizableText, XStack, YStack, Circle, Image } from 'tamagui'\n\nexport type ChatMessage = {\n id: string\n text: string\n sender: 'user' | 'other'\n timestamp?: string\n avatar?: string\n senderName?: string\n}\n\nexport type ChatBubbleProps = {\n message: ChatMessage\n showAvatar?: boolean\n}\n\nexport function ChatBubble({ message, showAvatar = true }: ChatBubbleProps) {\n const isUser = message.sender === 'user'\n\n return (\n <XStack\n alignSelf={isUser ? 'flex-end' : 'flex-start'}\n maxWidth=\"75%\"\n gap=\"$2\"\n flexDirection={isUser ? 'row-reverse' : 'row'}\n >\n {showAvatar && !isUser && (\n <Circle size={32} backgroundColor=\"$color4\" overflow=\"hidden\">\n {message.avatar ? (\n <Image source={{ uri: message.avatar }} width={32} height={32} objectFit=\"cover\" />\n ) : (\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"$color11\">\n {message.senderName?.[0]?.toUpperCase() ?? '?'}\n </SizableText>\n )}\n </Circle>\n )}\n <YStack\n backgroundColor={isUser ? '$color9' : '$color3'}\n paddingHorizontal=\"$3\"\n paddingVertical=\"$2.5\"\n borderRadius=\"$5\"\n borderBottomRightRadius={isUser ? '$2' : '$5'}\n borderBottomLeftRadius={isUser ? '$5' : '$2'}\n gap=\"$1\"\n >\n <SizableText size=\"$3\" color={isUser ? '$color1' : '$color12'}>\n {message.text}\n </SizableText>\n {message.timestamp && (\n <SizableText size=\"$1\" color={isUser ? '$color3' : '$color9'} alignSelf=\"flex-end\">\n {message.timestamp}\n </SizableText>\n )}\n </YStack>\n </XStack>\n )\n}\n","import { Separator, SizableText, Switch, XStack, YStack } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type SettingsItem = {\n id: string\n icon?: ReactNode\n title: string\n subtitle?: string\n right?: ReactNode\n onPress?: () => void\n type?: 'navigate' | 'toggle'\n value?: boolean\n onValueChange?: (value: boolean) => void\n}\n\nexport type SettingsSection = {\n title?: string\n items: SettingsItem[]\n}\n\nexport type SettingsScreenProps = {\n sections: SettingsSection[]\n header?: ReactNode\n}\n\nfunction SettingsItemRow({ item }: { item: SettingsItem }) {\n return (\n <XStack\n alignItems=\"center\"\n gap=\"$3\"\n paddingVertical=\"$3\"\n paddingHorizontal=\"$4\"\n hoverStyle={item.onPress ? { backgroundColor: '$color2' } : undefined}\n pressStyle={item.onPress ? { backgroundColor: '$color3' } : undefined}\n onPress={item.onPress}\n cursor={item.onPress ? 'pointer' : undefined}\n >\n {item.icon && (\n <YStack width={24} alignItems=\"center\">\n {item.icon}\n </YStack>\n )}\n <YStack flex={1} gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"500\">\n {item.title}\n </SizableText>\n {item.subtitle && (\n <SizableText size=\"$2\" color=\"$color9\">\n {item.subtitle}\n </SizableText>\n )}\n </YStack>\n {item.type === 'toggle' ? (\n <Switch size=\"$3\" checked={item.value} onCheckedChange={item.onValueChange}>\n <Switch.Thumb animation=\"quick\" />\n </Switch>\n ) : item.right ? (\n item.right\n ) : (\n item.onPress && (\n <SizableText size=\"$5\" color=\"$color8\">\n ›\n </SizableText>\n )\n )}\n </XStack>\n )\n}\n\nexport function SettingsScreen({ sections, header }: SettingsScreenProps) {\n return (\n <YStack flex={1} backgroundColor=\"$background\">\n {header}\n <YStack gap=\"$4\" paddingVertical=\"$2\">\n {sections.map((section, si) => (\n <YStack key={si}>\n {section.title && (\n <SizableText\n size=\"$2\"\n fontWeight=\"600\"\n color=\"$color9\"\n paddingHorizontal=\"$4\"\n paddingBottom=\"$2\"\n textTransform=\"uppercase\"\n >\n {section.title}\n </SizableText>\n )}\n <YStack backgroundColor=\"$color1\" borderRadius=\"$4\" marginHorizontal=\"$3\" overflow=\"hidden\">\n {section.items.map((item, ii) => (\n <YStack key={item.id}>\n <SettingsItemRow item={item} />\n {ii < section.items.length - 1 && (\n <Separator borderColor=\"$color3\" marginLeft=\"$12\" />\n )}\n </YStack>\n ))}\n </YStack>\n </YStack>\n ))}\n </YStack>\n </YStack>\n )\n}\n","import { Button, SizableText, YStack } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type EmptyStateProps = {\n icon?: ReactNode\n title: string\n description?: string\n actionLabel?: string\n onAction?: () => void\n}\n\nexport function EmptyState({ icon, title, description, actionLabel, onAction }: EmptyStateProps) {\n return (\n <YStack flex={1} alignItems=\"center\" justifyContent=\"center\" gap=\"$4\" padding=\"$6\">\n {icon}\n <YStack gap=\"$2\" alignItems=\"center\">\n <SizableText size=\"$6\" fontWeight=\"600\" textAlign=\"center\">\n {title}\n </SizableText>\n {description && (\n <SizableText size=\"$4\" color=\"$color9\" textAlign=\"center\" maxWidth={280}>\n {description}\n </SizableText>\n )}\n </YStack>\n {actionLabel && onAction && (\n <Button\n size=\"$4\"\n backgroundColor=\"$color9\"\n color=\"$color1\"\n borderRadius=\"$4\"\n hoverStyle={{ backgroundColor: '$color10' }}\n pressStyle={{ backgroundColor: '$color8' }}\n onPress={onAction}\n >\n {actionLabel}\n </Button>\n )}\n </YStack>\n )\n}\n","import { Circle, Image, SizableText, XStack, YStack } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type ProfileHeaderProps = {\n name: string\n subtitle?: string\n avatar?: string\n stats?: { label: string; value: string }[]\n actions?: ReactNode\n}\n\nexport function ProfileHeader({ name, subtitle, avatar, stats, actions }: ProfileHeaderProps) {\n return (\n <YStack alignItems=\"center\" gap=\"$4\" paddingVertical=\"$6\" paddingHorizontal=\"$4\">\n <Circle size={80} backgroundColor=\"$color4\" overflow=\"hidden\">\n {avatar ? (\n <Image source={{ uri: avatar }} width={80} height={80} objectFit=\"cover\" />\n ) : (\n <SizableText size=\"$9\" fontWeight=\"700\" color=\"$color11\">\n {name[0]?.toUpperCase() ?? '?'}\n </SizableText>\n )}\n </Circle>\n <YStack alignItems=\"center\" gap=\"$1\">\n <SizableText size=\"$7\" fontWeight=\"700\">\n {name}\n </SizableText>\n {subtitle && (\n <SizableText size=\"$4\" color=\"$color10\">\n {subtitle}\n </SizableText>\n )}\n </YStack>\n {stats && stats.length > 0 && (\n <XStack gap=\"$6\">\n {stats.map((stat, i) => (\n <YStack key={i} alignItems=\"center\" gap=\"$1\">\n <SizableText size=\"$6\" fontWeight=\"700\">\n {stat.value}\n </SizableText>\n <SizableText size=\"$2\" color=\"$color9\">\n {stat.label}\n </SizableText>\n </YStack>\n ))}\n </XStack>\n )}\n {actions}\n </YStack>\n )\n}\n","import { SizableText, XStack, YStack } from 'tamagui'\nimport { Avatar as BlinkAvatar } from '../primitives/Avatar'\n\nexport type AppHeaderVariant = 'simple' | 'back' | 'profile' | 'centered'\nexport type AppHeaderProps = {\n title: string; subtitle?: string; variant?: AppHeaderVariant\n onBack?: () => void; avatar?: string; left?: React.ReactNode; right?: React.ReactNode\n transparent?: boolean; borderless?: boolean\n}\n\nexport function AppHeader({ title, subtitle, variant = 'simple', onBack, avatar, left, right, transparent, borderless }: AppHeaderProps) {\n const leftContent = (() => {\n if (variant === 'back') return (\n <SizableText size=\"$6\" paddingRight=\"$2\" onPress={onBack} pressStyle={{ opacity: 0.6 }} cursor=\"pointer\">{'\\u2039'}</SizableText>\n )\n if (variant === 'profile') return <BlinkAvatar uri={avatar} name={title} size=\"sm\" />\n if (variant === 'centered') return left ?? null\n return null\n })()\n const rightContent = (variant === 'profile' || variant === 'centered') ? (right ?? null) : null\n\n return (\n <YStack paddingTop=\"$6\" backgroundColor={transparent ? 'transparent' : '$background'}\n borderBottomWidth={borderless ? 0 : 1} borderBottomColor=\"$borderColor\">\n <XStack height={56} alignItems=\"center\" paddingHorizontal=\"$4\" gap=\"$3\">\n {leftContent}\n <YStack flex={1} alignItems={variant === 'centered' ? 'center' : 'flex-start'}>\n <SizableText size=\"$6\" fontWeight=\"700\" numberOfLines={1}>{title}</SizableText>\n {subtitle && <SizableText size=\"$2\" color=\"$color9\" numberOfLines={1}>{subtitle}</SizableText>}\n </YStack>\n {rightContent}\n </XStack>\n </YStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { Sheet, SizableText, XStack, YStack } from 'tamagui'\nimport { ScrollView } from 'react-native'\n\nexport type BottomSheetProps = {\n open: boolean; onOpenChange: (open: boolean) => void; title?: string; children: ReactNode\n snapPoints?: number[]; dismissOnSnapToBottom?: boolean; showHandle?: boolean; showClose?: boolean\n zIndex?: number\n}\n\nexport function BottomSheet({ open, onOpenChange, title, children, snapPoints = [85], dismissOnSnapToBottom = true, showHandle = true, showClose = false, zIndex = 100_000 }: BottomSheetProps) {\n return (\n <Sheet\n modal\n forceRemoveScrollEnabled={open}\n open={open}\n onOpenChange={onOpenChange}\n snapPoints={snapPoints}\n dismissOnSnapToBottom={dismissOnSnapToBottom}\n zIndex={zIndex}\n animation=\"medium\"\n >\n <Sheet.Overlay animation=\"lazy\" enterStyle={{ opacity: 0 }} exitStyle={{ opacity: 0 }} />\n {showHandle && <Sheet.Handle />}\n <Sheet.Frame>\n {(title || showClose) && (\n <XStack paddingHorizontal=\"$4\" paddingTop=\"$3\" paddingBottom=\"$2\" alignItems=\"center\" justifyContent=\"space-between\">\n <SizableText size=\"$6\" fontWeight=\"600\" flexShrink={1}>{title}</SizableText>\n {showClose && (\n <XStack width={28} height={28} borderRadius=\"$10\" backgroundColor=\"$color4\" alignItems=\"center\" justifyContent=\"center\"\n pressStyle={{ opacity: 0.7 }} onPress={() => onOpenChange(false)}>\n <SizableText size=\"$3\" color=\"$color10\" fontWeight=\"600\">{'\\u2715'}</SizableText>\n </XStack>\n )}\n </XStack>\n )}\n <ScrollView contentContainerStyle={{ paddingBottom: 40 }}>\n <YStack padding=\"$4\">{children}</YStack>\n </ScrollView>\n </Sheet.Frame>\n </Sheet>\n )\n}\n","import { useState, type ReactNode } from 'react'\nimport { Button, SizableText, Spinner, XStack, YStack } from 'tamagui'\nimport { Input } from '../primitives/Input'\nimport { Divider } from '../layouts/Divider'\n\nexport type AuthProvider = { id: string; name: string; icon?: ReactNode }\nexport type LoginScreenProps = {\n title?: string; subtitle?: string; logo?: ReactNode; providers?: AuthProvider[]\n onProviderPress?: (id: string) => void; showEmailForm?: boolean\n onEmailSubmit?: (email: string, password: string) => void\n onForgotPassword?: () => void; onCreateAccount?: () => void\n onTerms?: () => void; onPrivacy?: () => void; loading?: boolean\n}\n\nexport function LoginScreen({ title = 'Welcome', subtitle = 'Sign in to continue', logo, providers = [], onProviderPress, showEmailForm, onEmailSubmit, onForgotPassword, onCreateAccount, onTerms, onPrivacy, loading }: LoginScreenProps) {\n const [email, setEmail] = useState('')\n const [password, setPassword] = useState('')\n return (\n <YStack flex={1} padding=\"$4\" gap=\"$5\" backgroundColor=\"$background\" justifyContent=\"center\">\n <YStack alignItems=\"center\" gap=\"$2\">\n {logo && <YStack paddingBottom=\"$3\">{logo}</YStack>}\n <SizableText size=\"$9\" fontWeight=\"700\" textAlign=\"center\">{title}</SizableText>\n <SizableText size=\"$4\" color=\"$color10\" textAlign=\"center\">{subtitle}</SizableText>\n </YStack>\n {providers.length > 0 && (\n <YStack gap=\"$2.5\">\n {providers.map(p => (\n <Button key={p.id} size=\"$5\" borderWidth={1.5} borderColor=\"$color5\" backgroundColor=\"$color1\" borderRadius=\"$4\"\n disabled={loading} onPress={() => onProviderPress?.(p.id)}\n hoverStyle={{ backgroundColor: '$color2' }} pressStyle={{ backgroundColor: '$color3' }}>\n <XStack alignItems=\"center\" gap=\"$2\">\n {p.icon}\n <SizableText size=\"$4\" fontWeight=\"500\">{p.name}</SizableText>\n </XStack>\n </Button>\n ))}\n </YStack>\n )}\n {showEmailForm && providers.length > 0 && <Divider label=\"or\" />}\n {showEmailForm && (\n <YStack gap=\"$3\">\n <Input label=\"Email\" placeholder=\"your@email.com\" value={email} onChangeText={setEmail} keyboardType=\"email-address\" autoCapitalize=\"none\" />\n <Input label=\"Password\" placeholder=\"••••••••\" value={password} onChangeText={setPassword} secureTextEntry />\n {onForgotPassword && <XStack justifyContent=\"flex-end\"><SizableText size=\"$3\" color=\"$color9\" onPress={onForgotPassword}>Forgot password?</SizableText></XStack>}\n <Button size=\"$5\" backgroundColor=\"$color9\" color=\"$color1\" borderRadius=\"$5\" disabled={loading}\n onPress={() => onEmailSubmit?.(email, password)}\n hoverStyle={{ backgroundColor: '$color10' }} pressStyle={{ backgroundColor: '$color8' }}\n icon={loading ? <Spinner size=\"small\" color=\"$color1\" /> : undefined}>\n Sign In\n </Button>\n {onCreateAccount && <Button size=\"$3\" chromeless onPress={onCreateAccount}><SizableText size=\"$3\" color=\"$color9\">Create Account</SizableText></Button>}\n </YStack>\n )}\n {(onTerms || onPrivacy) && (\n <YStack paddingTop=\"$2\" alignItems=\"center\">\n <SizableText size=\"$2\" color=\"$color8\" textAlign=\"center\">\n By continuing you agree to our{' '}\n {onTerms && <SizableText size=\"$2\" color=\"$color9\" onPress={onTerms}>Terms of Service</SizableText>}\n {onTerms && onPrivacy && ' & '}\n {onPrivacy && <SizableText size=\"$2\" color=\"$color9\" onPress={onPrivacy}>Privacy Policy</SizableText>}\n </SizableText>\n </YStack>\n )}\n </YStack>\n )\n}\n","import { SizableText, XStack, YStack } from 'tamagui'\n\nexport type TabBarItem = { id: string; label: string; icon?: React.ReactNode }\nexport type TabBarProps = { tabs: TabBarItem[]; activeTab: string; onTabPress: (id: string) => void; showLabels?: boolean }\n\nexport function TabBar({ tabs, activeTab, onTabPress, showLabels = true }: TabBarProps) {\n return (\n <XStack height={56} borderTopWidth={1} borderTopColor=\"$borderColor\" backgroundColor=\"$background\" paddingBottom=\"$2\">\n {tabs.map(tab => {\n const active = tab.id === activeTab\n return (\n <YStack key={tab.id} flex={1} alignItems=\"center\" justifyContent=\"center\" gap=\"$1\"\n pressStyle={{ opacity: 0.6 }} onPress={() => onTabPress(tab.id)}>\n {tab.icon && <SizableText size=\"$5\" color={active ? '$color9' : '$color8'}>{tab.icon}</SizableText>}\n {showLabels && <SizableText size=\"$1\" color={active ? '$color9' : '$color8'} fontWeight={active ? '600' : '400'}>{tab.label}</SizableText>}\n </YStack>\n )\n })}\n </XStack>\n )\n}\n","import { Input, SizableText, XStack } from 'tamagui'\n\nexport type SearchBarProps = {\n value: string; onChangeText: (text: string) => void; placeholder?: string\n onFilter?: () => void; onCancel?: () => void; autoFocus?: boolean\n}\n\nexport function SearchBar({ value, onChangeText, placeholder = 'Search\\u2026', onFilter, onCancel, autoFocus }: SearchBarProps) {\n return (\n <XStack height={44} borderRadius=\"$10\" backgroundColor=\"$color2\" alignItems=\"center\" paddingHorizontal=\"$3\" gap=\"$2\">\n <SizableText size=\"$4\" color=\"$color8\">{'\\u2315'}</SizableText>\n <Input flex={1} size=\"$4\" value={value} onChangeText={onChangeText} placeholder={placeholder}\n placeholderTextColor=\"$color8\" backgroundColor=\"transparent\" borderWidth={0} autoFocus={autoFocus} />\n {onFilter && <SizableText size=\"$4\" color=\"$color9\" pressStyle={{ opacity: 0.6 }} onPress={onFilter}>{'\\u2ACF'}</SizableText>}\n {onCancel && <SizableText size=\"$3\" color=\"$color9\" pressStyle={{ opacity: 0.6 }} onPress={onCancel}>Cancel</SizableText>}\n </XStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { SizableText, XStack } from 'tamagui'\n\nexport type FABProps = {\n icon?: ReactNode; label?: string; onPress: () => void\n position?: 'bottom-right' | 'bottom-center' | 'bottom-left'; size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizes = { sm: 44, md: 56, lg: 68 }\nconst positionStyles = {\n 'bottom-right': { right: 20 },\n 'bottom-center': { left: '50%', marginLeft: -28 },\n 'bottom-left': { left: 20 },\n}\n\nexport function FloatingActionButton({ icon, label, onPress, position = 'bottom-right', size = 'md' }: FABProps) {\n const dim = sizes[size]\n return (\n <XStack position=\"absolute\" bottom={32} {...positionStyles[position] as any}\n height={dim} minWidth={dim} borderRadius={label ? '$6' : '$10'}\n backgroundColor=\"$color9\" alignItems=\"center\" justifyContent=\"center\" gap=\"$2\"\n paddingHorizontal={label ? '$4' : 0} elevation={4}\n pressStyle={{ scale: 0.95, opacity: 0.9 }} onPress={onPress}>\n {icon && <SizableText color=\"$color1\">{icon}</SizableText>}\n {label && <SizableText color=\"$color1\" size=\"$4\" fontWeight=\"600\">{label}</SizableText>}\n </XStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { Sheet, SizableText, XStack, YStack } from 'tamagui'\n\nexport type ActionSheetItem = { id: string; label: string; icon?: ReactNode; destructive?: boolean }\nexport type ActionSheetProps = {\n open: boolean; onOpenChange: (open: boolean) => void; title?: string\n items: ActionSheetItem[]; onSelect: (id: string) => void; cancelLabel?: string\n zIndex?: number\n}\n\nexport function ActionSheet({ open, onOpenChange, title, items, onSelect, cancelLabel = 'Cancel', zIndex = 100_000 }: ActionSheetProps) {\n return (\n <Sheet\n modal\n forceRemoveScrollEnabled={open}\n open={open}\n onOpenChange={onOpenChange}\n snapPoints={[50]}\n dismissOnSnapToBottom\n zIndex={zIndex}\n animation=\"medium\"\n >\n <Sheet.Overlay animation=\"lazy\" enterStyle={{ opacity: 0 }} exitStyle={{ opacity: 0 }} />\n <Sheet.Handle />\n <Sheet.Frame>\n {title && <SizableText size=\"$3\" color=\"$color8\" textAlign=\"center\" paddingTop=\"$3\" paddingBottom=\"$1\">{title}</SizableText>}\n <YStack paddingHorizontal=\"$3\" paddingTop=\"$2\">\n {items.map(item => (\n <XStack key={item.id} height={52} alignItems=\"center\" gap=\"$3\" paddingHorizontal=\"$3\" borderRadius=\"$4\"\n pressStyle={{ backgroundColor: '$color3' }} onPress={() => { onSelect(item.id); onOpenChange(false) }}>\n {item.icon && <SizableText size=\"$5\">{item.icon}</SizableText>}\n <SizableText size=\"$5\" flex={1} color={item.destructive ? '$red9' : '$color12'}\n fontWeight={item.destructive ? '600' : '400'}>{item.label}</SizableText>\n </XStack>\n ))}\n </YStack>\n <YStack paddingHorizontal=\"$3\" paddingVertical=\"$3\" borderTopWidth={1} borderTopColor=\"$borderColor\" marginTop=\"$2\">\n <XStack height={48} alignItems=\"center\" justifyContent=\"center\" borderRadius=\"$4\"\n pressStyle={{ backgroundColor: '$color3' }} onPress={() => onOpenChange(false)}>\n <SizableText size=\"$5\" fontWeight=\"600\" color=\"$color9\">{cancelLabel}</SizableText>\n </XStack>\n </YStack>\n </Sheet.Frame>\n </Sheet>\n )\n}\n","import { YStack } from 'tamagui'\n\nexport type SkeletonProps = { width?: number | string; height?: number; borderRadius?: number; variant?: 'text' | 'circular' | 'rectangular' }\n\nexport function Skeleton({ width, height, borderRadius, variant = 'rectangular' }: SkeletonProps) {\n const size = variant === 'circular' ? (height ?? 40) : height\n const w = variant === 'text' ? (width ?? '100%') : width\n const h = variant === 'text' ? (height ?? 16) : size\n const r = variant === 'circular' ? 9999 : (borderRadius ?? 8)\n return <YStack width={w as any} height={h} borderRadius={r} backgroundColor=\"$color3\" opacity={0.6} animation=\"slow\" enterStyle={{ opacity: 0.3 }} exitStyle={{ opacity: 0.3 }} />\n}\n","import { type ReactNode } from 'react'\nimport { SizableText, XStack, YStack } from 'tamagui'\n\nexport type NotificationBannerProps = {\n title: string; message?: string; variant?: 'info' | 'success' | 'warning' | 'error'\n onPress?: () => void; onDismiss?: () => void; icon?: ReactNode\n}\n\nconst variantColors = {\n info: { bg: '$blue3', text: '$blue11' }, success: { bg: '$green3', text: '$green11' },\n warning: { bg: '$yellow3', text: '$yellow11' }, error: { bg: '$red3', text: '$red11' },\n}\n\nexport function NotificationBanner({ title, message, variant = 'info', onPress, onDismiss, icon }: NotificationBannerProps) {\n const colors = variantColors[variant]\n return (\n <XStack backgroundColor={colors.bg} padding=\"$3\" borderRadius=\"$4\" gap=\"$3\" alignItems=\"flex-start\"\n onPress={onPress} pressStyle={onPress ? { opacity: 0.8 } : undefined}>\n {icon && <YStack paddingTop=\"$0.5\">{icon}</YStack>}\n <YStack flex={1} gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"600\" color={colors.text}>{title}</SizableText>\n {message && <SizableText size=\"$3\" color={colors.text} opacity={0.8}>{message}</SizableText>}\n </YStack>\n {onDismiss && <SizableText size=\"$3\" color={colors.text} opacity={0.6} onPress={onDismiss} padding=\"$1\">{'\\u2715'}</SizableText>}\n </XStack>\n )\n}\n","import { Circle, SizableText, XStack, YStack } from 'tamagui'\n\nexport type ProgressStepsProps = { steps: string[]; currentStep: number; variant?: 'dots' | 'bar' | 'numbered' }\n\nexport function ProgressSteps({ steps, currentStep, variant = 'dots' }: ProgressStepsProps) {\n if (variant === 'bar') {\n const progress = steps.length > 1 ? (currentStep / (steps.length - 1)) * 100 : 100\n return (\n <YStack gap=\"$2\">\n <YStack height={4} backgroundColor=\"$color4\" borderRadius={2} overflow=\"hidden\">\n <YStack height={4} width={`${progress}%`} backgroundColor=\"$color9\" borderRadius={2} animation=\"quick\" />\n </YStack>\n <XStack justifyContent=\"space-between\">\n {steps.map((label, i) => <SizableText key={i} size=\"$2\" color={i <= currentStep ? '$color9' : '$color8'}>{label}</SizableText>)}\n </XStack>\n </YStack>\n )\n }\n return (\n <XStack alignItems=\"center\" justifyContent=\"center\" gap=\"$0\">\n {steps.map((label, i) => (\n <XStack key={i} alignItems=\"center\" gap=\"$0\">\n <YStack alignItems=\"center\" gap=\"$1.5\">\n <Circle size={variant === 'numbered' ? 28 : 10} backgroundColor={i <= currentStep ? '$color9' : '$color4'} animation=\"quick\">\n {variant === 'numbered' && <SizableText size=\"$2\" fontWeight=\"600\" color={i <= currentStep ? '$color1' : '$color8'}>{i + 1}</SizableText>}\n </Circle>\n <SizableText size=\"$1\" color={i <= currentStep ? '$color11' : '$color8'} numberOfLines={1}>{label}</SizableText>\n </YStack>\n {i < steps.length - 1 && <YStack height={2} width={32} backgroundColor={i < currentStep ? '$color9' : '$color4'} marginBottom=\"$4\" />}\n </XStack>\n ))}\n </XStack>\n )\n}\n","import { useState, type ReactNode } from 'react'\nimport { Button, SizableText, XStack, YStack } from 'tamagui'\n\nexport type SwipeAction = { id: string; label: string; color: string; onPress: () => void }\nexport type SwipeableRowProps = { children: ReactNode; leftActions?: SwipeAction[]; rightActions?: SwipeAction[] }\n\nexport function SwipeableRow({ children, leftActions, rightActions }: SwipeableRowProps) {\n const [showActions, setShowActions] = useState(false)\n const actions = [...(leftActions ?? []), ...(rightActions ?? [])]\n if (actions.length === 0) return <>{children}</>\n return (\n <YStack>\n <YStack onLongPress={() => setShowActions(v => !v)} pressStyle={{ opacity: 0.9 }}>{children}</YStack>\n {showActions && (\n <XStack gap=\"$2\" padding=\"$2\" animation=\"quick\" enterStyle={{ opacity: 0, scale: 0.95 }}>\n {actions.map(action => (\n <Button key={action.id} flex={1} size=\"$3\" backgroundColor={action.color} borderRadius=\"$3\"\n onPress={() => { action.onPress(); setShowActions(false) }}>\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"white\">{action.label}</SizableText>\n </Button>\n ))}\n </XStack>\n )}\n </YStack>\n )\n}\n","import { Image, SizableText, XStack, YStack } from 'tamagui'\nimport { LinearGradient } from 'tamagui/linear-gradient'\n\nexport type MediaCardProps = {\n image: string; title: string; subtitle?: string\n overlay?: 'gradient' | 'dark' | 'none'; aspectRatio?: number\n onPress?: () => void; badge?: string\n}\n\nexport function MediaCard({ image, title, subtitle, overlay = 'gradient', aspectRatio = 16 / 9, onPress, badge }: MediaCardProps) {\n return (\n <YStack borderRadius=\"$4\" overflow=\"hidden\" onPress={onPress}\n pressStyle={onPress ? { scale: 0.98, opacity: 0.9 } : undefined} animation=\"quick\">\n <YStack aspectRatio={aspectRatio}>\n <Image source={{ uri: image }} width=\"100%\" height=\"100%\" objectFit=\"cover\" />\n {overlay === 'gradient' && (\n <LinearGradient colors={['transparent', 'rgba(0,0,0,0.7)']} start={[0, 0]} end={[0, 1]}\n position=\"absolute\" bottom={0} left={0} right={0} height=\"60%\" />\n )}\n {overlay === 'dark' && <YStack position=\"absolute\" fullscreen backgroundColor=\"rgba(0,0,0,0.4)\" />}\n {badge && (\n <XStack position=\"absolute\" top=\"$2\" right=\"$2\" backgroundColor=\"$color9\"\n paddingHorizontal=\"$2\" paddingVertical=\"$1\" borderRadius=\"$2\">\n <SizableText size=\"$1\" fontWeight=\"600\" color=\"$color1\">{badge}</SizableText>\n </XStack>\n )}\n <YStack position=\"absolute\" bottom={0} left={0} right={0} padding=\"$3\" gap=\"$1\">\n <SizableText size=\"$5\" fontWeight=\"600\" color=\"white\">{title}</SizableText>\n {subtitle && <SizableText size=\"$3\" color=\"rgba(255,255,255,0.8)\">{subtitle}</SizableText>}\n </YStack>\n </YStack>\n </YStack>\n )\n}\n","import { Children, useState, type ReactNode } from 'react'\nimport { Circle, XStack, YStack } from 'tamagui'\nimport { ScrollView } from 'react-native'\nimport type { NativeScrollEvent, NativeSyntheticEvent } from 'react-native'\n\nexport type CarouselProps = { children: ReactNode; gap?: string; snapToInterval?: number; showIndicators?: boolean }\n\nexport function Carousel({ children, gap = '$3', snapToInterval, showIndicators = false }: CarouselProps) {\n const [activeIndex, setActiveIndex] = useState(0)\n const count = Children.count(children)\n const gapPx = gap === '$2' ? 8 : gap === '$3' ? 12 : 16\n return (\n <YStack gap=\"$3\">\n <ScrollView horizontal showsHorizontalScrollIndicator={false} snapToInterval={snapToInterval} decelerationRate=\"fast\"\n contentContainerStyle={{ gap: gapPx, paddingHorizontal: 16 }}\n onMomentumScrollEnd={(e: NativeSyntheticEvent<NativeScrollEvent>) => {\n if (snapToInterval) setActiveIndex(Math.round(e.nativeEvent.contentOffset.x / snapToInterval))\n }}>\n {children}\n </ScrollView>\n {showIndicators && count > 1 && (\n <XStack justifyContent=\"center\" gap=\"$1.5\">\n {Array.from({ length: count }, (_, i) => (\n <Circle key={i} size={6} backgroundColor={i === activeIndex ? '$color9' : '$color4'} animation=\"quick\" />\n ))}\n </XStack>\n )}\n </YStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { YStack } from 'tamagui'\nimport { RefreshControl, ScrollView } from 'react-native'\n\nexport type PullToRefreshProps = { children: ReactNode; onRefresh: () => void; refreshing?: boolean }\n\nexport function PullToRefresh({ children, onRefresh, refreshing = false }: PullToRefreshProps) {\n return (\n <ScrollView contentContainerStyle={{ flexGrow: 1 }}\n refreshControl={<RefreshControl refreshing={refreshing} onRefresh={onRefresh} />}>\n <YStack flex={1}>{children}</YStack>\n </ScrollView>\n )\n}\n","import { Button, Image, SizableText, XStack, YStack } from 'tamagui'\n\nexport type ProductCardProps = {\n image: string\n title: string\n price: string\n originalPrice?: string\n rating?: number\n reviewCount?: number\n badge?: string\n onPress?: () => void\n onAddToCart?: () => void\n variant?: 'vertical' | 'horizontal'\n}\n\nfunction Stars({ rating = 0 }: { rating?: number }) {\n return (\n <XStack gap=\"$0.5\">\n {Array.from({ length: 5 }, (_, i) => (\n <SizableText key={i} size=\"$2\" color={i < Math.round(rating) ? '$yellow9' : '$color5'}>★</SizableText>\n ))}\n </XStack>\n )\n}\n\nfunction CardContent({ title, price, originalPrice, rating, reviewCount, onAddToCart }: Omit<ProductCardProps, 'image' | 'badge' | 'onPress' | 'variant'>) {\n return (\n <YStack flex={1} gap=\"$1.5\" justifyContent=\"space-between\">\n <YStack gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"600\" numberOfLines={2}>{title}</SizableText>\n {rating !== undefined && (\n <XStack gap=\"$1.5\" alignItems=\"center\">\n <Stars rating={rating} />\n {reviewCount !== undefined && <SizableText size=\"$2\" color=\"$color9\">({reviewCount})</SizableText>}\n </XStack>\n )}\n </YStack>\n <XStack alignItems=\"center\" justifyContent=\"space-between\">\n <XStack gap=\"$2\" alignItems=\"baseline\">\n <SizableText size=\"$6\" fontWeight=\"700\">{price}</SizableText>\n {originalPrice && (\n <SizableText size=\"$3\" color=\"$color8\" textDecorationLine=\"line-through\">{originalPrice}</SizableText>\n )}\n </XStack>\n {onAddToCart && (\n <Button size=\"$3\" backgroundColor=\"$color9\" color=\"$color1\" borderRadius=\"$10\"\n onPress={(e: any) => { e.stopPropagation?.(); onAddToCart() }}\n pressStyle={{ backgroundColor: '$color8', scale: 0.95 }} animation=\"quick\">\n + Cart\n </Button>\n )}\n </XStack>\n </YStack>\n )\n}\n\nexport function ProductCard({ image, title, price, originalPrice, rating, reviewCount, badge, onPress, onAddToCart, variant = 'vertical' }: ProductCardProps) {\n const isHorizontal = variant === 'horizontal'\n const Wrapper = isHorizontal ? XStack : YStack\n\n return (\n <Wrapper backgroundColor=\"$color1\" borderRadius=\"$5\" overflow=\"hidden\" borderWidth={1}\n borderColor=\"$color4\" onPress={onPress} animation=\"quick\"\n pressStyle={onPress ? { scale: 0.98, opacity: 0.9 } : undefined}\n {...(isHorizontal ? { height: 140 } : {})}>\n <YStack {...(isHorizontal ? { width: 140 } : { aspectRatio: 4 / 3 })} position=\"relative\">\n <Image source={{ uri: image }} width=\"100%\" height=\"100%\" objectFit=\"cover\" />\n {badge && (\n <XStack position=\"absolute\" top=\"$2\" left=\"$2\" backgroundColor=\"$red9\"\n paddingHorizontal=\"$2\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$1\" fontWeight=\"700\" color=\"white\">{badge}</SizableText>\n </XStack>\n )}\n </YStack>\n <YStack flex={1} padding=\"$3\">\n <CardContent {...{ title, price, originalPrice, rating, reviewCount, onAddToCart }} />\n </YStack>\n </Wrapper>\n )\n}\n","import { Button, ScrollView, SizableText, XStack, YStack } from 'tamagui'\n\nexport type PricingPlan = {\n id: string\n name: string\n price: string\n period?: string\n description?: string\n features: { label: string; included: boolean }[]\n popular?: boolean\n cta?: string\n}\n\nexport type PricingTableProps = {\n plans: PricingPlan[]\n selectedPlan?: string\n onSelectPlan?: (planId: string) => void\n annual?: boolean\n onToggleBilling?: (annual: boolean) => void\n}\n\nfunction BillingToggle({ annual, onToggle }: { annual: boolean; onToggle: (v: boolean) => void }) {\n return (\n <XStack alignSelf=\"center\" backgroundColor=\"$color3\" borderRadius=\"$10\" padding=\"$1\" gap=\"$0.5\">\n {(['Monthly', 'Annual'] as const).map((label, i) => {\n const active = i === 1 ? annual : !annual\n return (\n <XStack key={label} paddingHorizontal=\"$4\" paddingVertical=\"$2\" borderRadius=\"$10\"\n backgroundColor={active ? '$color9' : 'transparent'} onPress={() => onToggle(i === 1)}\n pressStyle={{ opacity: 0.8 }} animation=\"quick\">\n <SizableText size=\"$3\" fontWeight=\"600\" color={active ? '$color1' : '$color10'}>{label}</SizableText>\n </XStack>\n )\n })}\n </XStack>\n )\n}\n\nfunction PlanCard({ plan, selected, onSelect }: { plan: PricingPlan; selected: boolean; onSelect: () => void }) {\n return (\n <YStack flex={1} minWidth={260} padding=\"$4\" borderRadius=\"$5\" gap=\"$3\"\n borderWidth={2} borderColor={selected ? '$color9' : plan.popular ? '$color9' : '$color4'}\n backgroundColor={plan.popular ? '$color2' : '$color1'} position=\"relative\"\n pressStyle={{ scale: 0.98 }} animation=\"quick\" onPress={onSelect}>\n {plan.popular && (\n <XStack position=\"absolute\" top={-12} alignSelf=\"center\"\n backgroundColor=\"$color9\" paddingHorizontal=\"$3\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$1\" fontWeight=\"700\" color=\"$color1\">POPULAR</SizableText>\n </XStack>\n )}\n <YStack gap=\"$1\" alignItems=\"center\" paddingTop={plan.popular ? '$2' : 0}>\n <SizableText size=\"$4\" fontWeight=\"600\" color=\"$color11\">{plan.name}</SizableText>\n {plan.description && <SizableText size=\"$2\" color=\"$color9\" textAlign=\"center\">{plan.description}</SizableText>}\n <XStack alignItems=\"baseline\" gap=\"$1\">\n <SizableText size=\"$9\" fontWeight=\"800\">{plan.price}</SizableText>\n {plan.period && <SizableText size=\"$3\" color=\"$color9\">/{plan.period}</SizableText>}\n </XStack>\n </YStack>\n <YStack gap=\"$2\" flex={1}>\n {plan.features.map((f, i) => (\n <XStack key={i} gap=\"$2\" alignItems=\"center\">\n <SizableText size=\"$3\" color={f.included ? '$green9' : '$color6'}>{f.included ? '✓' : '✗'}</SizableText>\n <SizableText size=\"$3\" color={f.included ? '$color11' : '$color8'} flex={1}>{f.label}</SizableText>\n </XStack>\n ))}\n </YStack>\n <Button size=\"$4\" borderRadius=\"$10\" fontWeight=\"700\" animation=\"quick\"\n backgroundColor={selected || plan.popular ? '$color9' : 'transparent'}\n color={selected || plan.popular ? '$color1' : '$color11'}\n borderWidth={selected || plan.popular ? 0 : 1} borderColor=\"$color7\"\n onPress={onSelect} pressStyle={{ scale: 0.97, opacity: 0.9 }}>\n {plan.cta ?? 'Get Started'}\n </Button>\n </YStack>\n )\n}\n\nexport function PricingTable({ plans, selectedPlan, onSelectPlan, annual = false, onToggleBilling }: PricingTableProps) {\n const selected = selectedPlan ?? plans.find((p) => p.popular)?.id\n return (\n <YStack gap=\"$4\">\n {onToggleBilling && <BillingToggle annual={annual} onToggle={onToggleBilling} />}\n <ScrollView horizontal showsHorizontalScrollIndicator={false}\n contentContainerStyle={{ gap: 12, paddingHorizontal: 4 }}>\n {plans.map((plan) => (\n <PlanCard key={plan.id} plan={plan} selected={selected === plan.id}\n onSelect={() => onSelectPlan?.(plan.id)} />\n ))}\n </ScrollView>\n </YStack>\n )\n}\n","import { useState, useEffect, useRef, useCallback } from 'react'\nimport { SizableText, XStack, YStack } from 'tamagui'\n\nexport type CountdownBannerProps = {\n endTime?: Date\n minutes?: number\n label?: string\n onExpire?: () => void\n variant?: 'banner' | 'compact' | 'badge'\n}\n\nfunction useCountdown(endTime?: Date, minutes?: number, onExpire?: () => void) {\n const getRemaining = useCallback(() => {\n if (endTime) return Math.max(0, Math.floor((endTime.getTime() - Date.now()) / 1000))\n return 0\n }, [endTime])\n\n const [seconds, setSeconds] = useState(() => endTime ? getRemaining() : (minutes ?? 0) * 60)\n const firedRef = useRef(false)\n\n useEffect(() => {\n if (endTime) setSeconds(getRemaining())\n else setSeconds((minutes ?? 0) * 60)\n firedRef.current = false\n }, [endTime, minutes, getRemaining])\n\n useEffect(() => {\n if (seconds <= 0) return\n const id = setInterval(() => {\n setSeconds((s) => {\n const next = endTime ? Math.max(0, Math.floor((endTime.getTime() - Date.now()) / 1000)) : s - 1\n if (next <= 0 && !firedRef.current) { firedRef.current = true; onExpire?.() }\n return Math.max(0, next)\n })\n }, 1000)\n return () => clearInterval(id)\n }, [seconds > 0, endTime, onExpire])\n\n const hh = String(Math.floor(seconds / 3600)).padStart(2, '0')\n const mm = String(Math.floor((seconds % 3600) / 60)).padStart(2, '0')\n const ss = String(seconds % 60).padStart(2, '0')\n const display = seconds >= 3600 ? `${hh}:${mm}:${ss}` : `${mm}:${ss}`\n return { display, expired: seconds <= 0 }\n}\n\nfunction TimeBox({ value }: { value: string }) {\n return (\n <XStack backgroundColor=\"rgba(0,0,0,0.15)\" paddingHorizontal=\"$2\" paddingVertical=\"$1\" borderRadius=\"$3\">\n <SizableText size=\"$6\" fontWeight=\"800\" color=\"white\" fontFamily=\"$mono\">{value}</SizableText>\n </XStack>\n )\n}\n\nexport function CountdownBanner({ endTime, minutes, label = 'Offer ends in', onExpire, variant = 'banner' }: CountdownBannerProps) {\n const { display, expired } = useCountdown(endTime, minutes, onExpire)\n if (expired) return null\n\n const parts = display.split(':')\n\n if (variant === 'badge') {\n return (\n <XStack backgroundColor=\"$red9\" paddingHorizontal=\"$2.5\" paddingVertical=\"$1\" borderRadius=\"$10\" gap=\"$1.5\" alignItems=\"center\">\n <SizableText size=\"$1\" fontWeight=\"600\" color=\"white\">{label}</SizableText>\n <SizableText size=\"$2\" fontWeight=\"800\" color=\"white\" fontFamily=\"$mono\">{display}</SizableText>\n </XStack>\n )\n }\n\n if (variant === 'compact') {\n return (\n <XStack backgroundColor=\"$red3\" paddingHorizontal=\"$3\" paddingVertical=\"$2\" borderRadius=\"$4\" gap=\"$2\" alignItems=\"center\" alignSelf=\"center\">\n <SizableText size=\"$3\" fontWeight=\"600\" color=\"$red9\">{label}</SizableText>\n <SizableText size=\"$5\" fontWeight=\"800\" color=\"$red9\" fontFamily=\"$mono\">{display}</SizableText>\n </XStack>\n )\n }\n\n return (\n <YStack backgroundColor=\"$red9\" paddingVertical=\"$3\" paddingHorizontal=\"$4\" gap=\"$1.5\" alignItems=\"center\">\n <SizableText size=\"$3\" fontWeight=\"600\" color=\"white\" opacity={0.9}>{label}</SizableText>\n <XStack gap=\"$1.5\" alignItems=\"center\">\n {parts.map((p, i) => (\n <XStack key={i} gap=\"$1.5\" alignItems=\"center\">\n {i > 0 && <SizableText size=\"$6\" fontWeight=\"800\" color=\"white\">:</SizableText>}\n <TimeBox value={p} />\n </XStack>\n ))}\n </XStack>\n </YStack>\n )\n}\n","import { Image, SizableText, XStack, YStack } from 'tamagui'\n\nexport type TestimonialCardProps = {\n quote: string\n author: string\n role?: string\n avatar?: string\n rating?: number\n variant?: 'card' | 'minimal' | 'featured'\n}\n\nfunction Stars({ count = 0 }: { count?: number }) {\n if (!count) return null\n return (\n <XStack gap=\"$0.5\">\n {Array.from({ length: 5 }, (_, i) => (\n <SizableText key={i} size=\"$3\" color={i < Math.round(count) ? '$yellow9' : '$color5'}>★</SizableText>\n ))}\n </XStack>\n )\n}\n\nfunction AuthorRow({ author, role, avatar }: Pick<TestimonialCardProps, 'author' | 'role' | 'avatar'>) {\n return (\n <XStack gap=\"$2.5\" alignItems=\"center\">\n {avatar && (\n <Image source={{ uri: avatar }} width={36} height={36} borderRadius={18} objectFit=\"cover\" />\n )}\n <YStack>\n <SizableText size=\"$3\" fontWeight=\"600\">{author}</SizableText>\n {role && <SizableText size=\"$2\" color=\"$color9\">{role}</SizableText>}\n </YStack>\n </XStack>\n )\n}\n\nexport function TestimonialCard({ quote, author, role, avatar, rating, variant = 'card' }: TestimonialCardProps) {\n if (variant === 'minimal') {\n return (\n <YStack gap=\"$3\" paddingVertical=\"$2\">\n <Stars count={rating} />\n <SizableText size=\"$4\" color=\"$color11\" fontStyle=\"italic\" lineHeight={24}>\"{quote}\"</SizableText>\n <AuthorRow author={author} role={role} avatar={avatar} />\n </YStack>\n )\n }\n\n if (variant === 'featured') {\n return (\n <YStack backgroundColor=\"$color3\" padding=\"$5\" borderRadius=\"$6\" gap=\"$4\" alignItems=\"center\">\n <SizableText size=\"$8\" color=\"$color9\" opacity={0.3} fontWeight=\"800\">\"</SizableText>\n <Stars count={rating} />\n <SizableText size=\"$5\" color=\"$color12\" fontStyle=\"italic\" textAlign=\"center\" lineHeight={28}>\n \"{quote}\"\n </SizableText>\n <AuthorRow author={author} role={role} avatar={avatar} />\n </YStack>\n )\n }\n\n return (\n <YStack backgroundColor=\"$color1\" padding=\"$4\" borderRadius=\"$5\" borderWidth={1}\n borderColor=\"$color4\" gap=\"$3\">\n <Stars count={rating} />\n <SizableText size=\"$4\" color=\"$color11\" fontStyle=\"italic\" lineHeight={24}>\"{quote}\"</SizableText>\n <AuthorRow author={author} role={role} avatar={avatar} />\n </YStack>\n )\n}\n","import type { ReactNode } from 'react'\nimport { AlertDialog, Button, SizableText, XStack, YStack } from 'tamagui'\n\nexport type ConfirmDialogProps = {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: string\n description?: string\n confirmLabel?: string\n cancelLabel?: string\n onConfirm?: () => void\n onCancel?: () => void\n destructive?: boolean\n icon?: ReactNode\n}\n\nexport function ConfirmDialog({\n open, onOpenChange, title, description,\n confirmLabel = 'Confirm', cancelLabel = 'Cancel',\n onConfirm, onCancel, destructive = false, icon,\n}: ConfirmDialogProps) {\n const handleCancel = () => { onCancel?.(); onOpenChange(false) }\n const handleConfirm = () => { onConfirm?.(); onOpenChange(false) }\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialog.Portal>\n <AlertDialog.Overlay key=\"overlay\" opacity={0.5}\n enterStyle={{ opacity: 0 }} exitStyle={{ opacity: 0 }} animation=\"quick\" />\n <AlertDialog.Content key=\"content\" bordered elevate width=\"90%\" maxWidth={400}\n enterStyle={{ y: -20, opacity: 0, scale: 0.9 }}\n exitStyle={{ y: 10, opacity: 0, scale: 0.95 }}\n x={0} y={0} scale={1} opacity={1} animation=\"quick\">\n <YStack gap=\"$4\" padding=\"$4\">\n {icon && <YStack alignItems=\"center\">{icon}</YStack>}\n <YStack gap=\"$2\" alignItems={icon ? 'center' : 'flex-start'}>\n <AlertDialog.Title size=\"$6\" fontWeight=\"700\">{title}</AlertDialog.Title>\n {description && (\n <AlertDialog.Description size=\"$3\" color=\"$color10\"\n textAlign={icon ? 'center' : 'left'}>\n {description}\n </AlertDialog.Description>\n )}\n </YStack>\n <XStack gap=\"$3\" justifyContent=\"flex-end\">\n <Button flex={1} size=\"$4\" borderRadius=\"$4\" variant=\"outlined\"\n borderColor=\"$color7\" onPress={handleCancel}\n pressStyle={{ opacity: 0.7 }} animation=\"quick\">\n <SizableText fontWeight=\"600\">{cancelLabel}</SizableText>\n </Button>\n <Button flex={1} size=\"$4\" borderRadius=\"$4\"\n backgroundColor={destructive ? '$red9' : '$color9'}\n onPress={handleConfirm}\n pressStyle={{ backgroundColor: destructive ? '$red8' : '$color8', scale: 0.97 }}\n animation=\"quick\">\n <SizableText fontWeight=\"600\" color=\"white\">{confirmLabel}</SizableText>\n </Button>\n </XStack>\n </YStack>\n </AlertDialog.Content>\n </AlertDialog.Portal>\n </AlertDialog>\n )\n}\n","import { type ReactNode, useCallback } from 'react'\nimport { SizableText, XStack } from 'tamagui'\n\nexport type ChipProps = {\n label: string\n selected?: boolean\n onPress?: () => void\n onRemove?: () => void\n variant?: 'filled' | 'outlined'\n size?: 'sm' | 'md' | 'lg'\n icon?: ReactNode\n color?: string\n}\n\nexport type ChipGroupProps = {\n chips: { id: string; label: string; icon?: ReactNode }[]\n selected?: string[]\n onSelectionChange?: (selected: string[]) => void\n multiSelect?: boolean\n variant?: 'filled' | 'outlined'\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizes = { sm: { h: 28, px: '$2', text: '$2' }, md: { h: 34, px: '$3', text: '$3' }, lg: { h: 42, px: '$4', text: '$4' } } as const\n\nexport function Chip({ label, selected, onPress, onRemove, variant = 'filled', size = 'md', icon, color }: ChipProps) {\n const s = sizes[size]\n const filled = variant === 'filled'\n const active = selected ?? false\n const bg = active ? (color ?? '$color9') : filled ? '$color3' : 'transparent'\n const border = active ? (color ?? '$color9') : '$color6'\n const fg = active ? '$color1' : '$color11'\n\n return (\n <XStack\n height={s.h} borderRadius=\"$10\" paddingHorizontal={s.px}\n backgroundColor={bg} borderWidth={filled ? 0 : 1} borderColor={border}\n alignItems=\"center\" gap=\"$1.5\" pressStyle={{ scale: 0.96, opacity: 0.85 }}\n animation=\"quick\" onPress={onPress} cursor=\"pointer\"\n >\n {active && <SizableText size={s.text} color={fg}>✓</SizableText>}\n {icon && <SizableText color={fg}>{icon}</SizableText>}\n <SizableText size={s.text} color={fg} fontWeight=\"500\">{label}</SizableText>\n {onRemove && (\n <SizableText size=\"$2\" color={fg} opacity={0.7} pressStyle={{ opacity: 1 }}\n onPress={(e: any) => { e.stopPropagation?.(); onRemove() }} marginLeft=\"$1\">✕</SizableText>\n )}\n </XStack>\n )\n}\n\nexport function ChipGroup({ chips, selected = [], onSelectionChange, multiSelect = true, variant, size }: ChipGroupProps) {\n const toggle = useCallback((id: string) => {\n if (!onSelectionChange) return\n const isSelected = selected.includes(id)\n if (multiSelect) {\n onSelectionChange(isSelected ? selected.filter(s => s !== id) : [...selected, id])\n } else {\n onSelectionChange(isSelected ? [] : [id])\n }\n }, [selected, onSelectionChange, multiSelect])\n\n return (\n <XStack flexWrap=\"wrap\" gap=\"$2\">\n {chips.map(chip => (\n <Chip key={chip.id} label={chip.label} icon={chip.icon} selected={selected.includes(chip.id)}\n onPress={() => toggle(chip.id)} variant={variant} size={size} />\n ))}\n </XStack>\n )\n}\n","import { useCallback, useRef } from 'react'\nimport { type TextInput } from 'react-native'\nimport { Input, SizableText, XStack, YStack } from 'tamagui'\n\nexport type OTPInputProps = {\n length?: number\n value?: string\n onChange?: (value: string) => void\n onComplete?: (code: string) => void\n error?: boolean\n autoFocus?: boolean\n secureEntry?: boolean\n}\n\nexport function OTPInput({ length = 6, value = '', onChange, onComplete, error, autoFocus, secureEntry }: OTPInputProps) {\n const inputRef = useRef<TextInput>(null)\n const digits = value.padEnd(length, ' ').slice(0, length)\n\n const handleChange = useCallback((text: string) => {\n const cleaned = text.replace(/\\D/g, '').slice(0, length)\n onChange?.(cleaned)\n if (cleaned.length === length) onComplete?.(cleaned)\n }, [length, onChange, onComplete])\n\n return (\n <YStack>\n <XStack gap=\"$2\" justifyContent=\"center\" onPress={() => inputRef.current?.focus()}>\n {Array.from({ length }, (_, i) => {\n const char = digits[i]?.trim()\n const focused = value.length === i\n return (\n <YStack\n key={i} width={48} height={56} borderRadius=\"$3\"\n borderWidth={2} borderColor={error ? '$red9' : focused ? '$color9' : '$color6'}\n backgroundColor={error ? '$red2' : '$color2'}\n alignItems=\"center\" justifyContent=\"center\" animation=\"quick\"\n >\n <SizableText size=\"$7\" fontWeight=\"600\" color=\"$color12\">\n {char ? (secureEntry ? '●' : char) : ''}\n </SizableText>\n {focused && <YStack position=\"absolute\" bottom={10} width={20} height={2} backgroundColor=\"$color9\" animation=\"quick\" />}\n </YStack>\n )\n })}\n </XStack>\n <Input\n ref={inputRef as any} value={value} onChangeText={handleChange}\n keyboardType=\"number-pad\" maxLength={length} autoFocus={autoFocus}\n position=\"absolute\" opacity={0} width={1} height={1}\n />\n </YStack>\n )\n}\n","import { useState, useCallback } from 'react'\nimport { Input, SizableText, XStack, YStack } from 'tamagui'\n\nexport type PasswordInputProps = {\n value?: string\n onChangeText?: (value: string) => void\n placeholder?: string\n label?: string\n error?: string\n size?: '$3' | '$4' | '$5'\n strengthIndicator?: boolean\n}\n\nfunction getStrength(pw: string): { label: string; color: string; width: string } {\n if (!pw) return { label: '', color: '$color6', width: '0%' }\n const score = [pw.length >= 8, /[A-Z]/.test(pw), /[0-9]/.test(pw), /[^A-Za-z0-9]/.test(pw)].filter(Boolean).length\n if (score <= 1) return { label: 'Weak', color: '$red9', width: '33%' }\n if (score <= 2) return { label: 'Medium', color: '$yellow9', width: '66%' }\n return { label: 'Strong', color: '$green9', width: '100%' }\n}\n\nexport function PasswordInput({ value = '', onChangeText, placeholder = 'Password', label, error, size = '$4', strengthIndicator }: PasswordInputProps) {\n const [visible, setVisible] = useState(false)\n const toggle = useCallback(() => setVisible(v => !v), [])\n const strength = getStrength(value)\n\n return (\n <YStack gap=\"$1.5\">\n {label && <SizableText size=\"$3\" color=\"$color11\" fontWeight=\"500\">{label}</SizableText>}\n <XStack\n borderWidth={1} borderColor={error ? '$red9' : '$color6'} borderRadius=\"$3\"\n backgroundColor=\"$color2\" alignItems=\"center\" paddingRight=\"$2\"\n focusStyle={{ borderColor: '$color9' }}\n >\n <Input\n flex={1} size={size} value={value} onChangeText={onChangeText}\n placeholder={placeholder} placeholderTextColor=\"$color8\"\n secureTextEntry={!visible} backgroundColor=\"transparent\" borderWidth={0}\n />\n <SizableText\n size=\"$4\" color=\"$color8\" paddingHorizontal=\"$2\"\n pressStyle={{ opacity: 0.6 }} onPress={toggle} cursor=\"pointer\"\n >\n {visible ? '◉' : '◎'}\n </SizableText>\n </XStack>\n {strengthIndicator && value.length > 0 && (\n <YStack gap=\"$1\">\n <YStack height={3} backgroundColor=\"$color4\" borderRadius={2} overflow=\"hidden\">\n <YStack height={3} width={strength.width as any} backgroundColor={strength.color} borderRadius={2} animation=\"quick\" />\n </YStack>\n <SizableText size=\"$1\" color={strength.color}>{strength.label}</SizableText>\n </YStack>\n )}\n {error && <SizableText size=\"$2\" color=\"$red9\">{error}</SizableText>}\n </YStack>\n )\n}\n","import { Circle, Image, SizableText, XStack } from 'tamagui'\n\nexport type AvatarGroupProps = {\n avatars: { uri?: string; name?: string; color?: string }[]\n max?: number\n size?: number\n overlap?: number\n}\n\nfunction getInitials(name?: string): string {\n if (!name) return '?'\n return name.split(' ').map(p => p[0]).join('').toUpperCase().slice(0, 2)\n}\n\nfunction AvatarItem({ uri, name, color, size }: { uri?: string; name?: string; color?: string; size: number }) {\n return (\n <Circle\n size={size} backgroundColor={color ?? '$color4'} borderWidth={2} borderColor=\"$background\"\n overflow=\"hidden\" alignItems=\"center\" justifyContent=\"center\"\n >\n {uri ? (\n <Image source={{ uri }} width={size} height={size} objectFit=\"cover\" />\n ) : (\n <SizableText size=\"$2\" fontWeight=\"600\" color={color ? '$color1' : '$color11'}>\n {getInitials(name)}\n </SizableText>\n )}\n </Circle>\n )\n}\n\nexport function AvatarGroup({ avatars, max = 4, size = 36, overlap = 10 }: AvatarGroupProps) {\n const visible = avatars.slice(0, max)\n const remaining = avatars.length - max\n\n return (\n <XStack alignItems=\"center\">\n {visible.map((avatar, i) => (\n <XStack key={i} marginLeft={i === 0 ? 0 : -overlap} zIndex={visible.length - i}>\n <AvatarItem {...avatar} size={size} />\n </XStack>\n ))}\n {remaining > 0 && (\n <XStack marginLeft={-overlap} zIndex={0}>\n <Circle size={size} backgroundColor=\"$color6\" borderWidth={2} borderColor=\"$background\"\n alignItems=\"center\" justifyContent=\"center\">\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"$color11\">+{remaining}</SizableText>\n </Circle>\n </XStack>\n )}\n </XStack>\n )\n}\n","import { useState, useCallback, type ReactNode } from 'react'\nimport { Circle, SizableText, XStack, YStack } from 'tamagui'\n\nexport type SwipeCardItem = { id: string; [key: string]: any }\nexport type SwipeCardsProps<T extends SwipeCardItem> = {\n items: T[]\n renderCard: (item: T) => ReactNode\n onSwipeLeft?: (item: T) => void\n onSwipeRight?: (item: T) => void\n onEmpty?: () => void\n leftLabel?: string\n rightLabel?: string\n emptyMessage?: string\n}\n\nconst STACK_SIZE = 3\nconst CARD_OFFSETS = [\n { scale: 1, y: 0, opacity: 1 },\n { scale: 0.95, y: 8, opacity: 0.9 },\n { scale: 0.9, y: 16, opacity: 0.8 },\n]\n\nexport function SwipeCards<T extends SwipeCardItem>({\n items, renderCard, onSwipeLeft, onSwipeRight, onEmpty,\n leftLabel = 'Nope', rightLabel = 'Like', emptyMessage = 'No more cards',\n}: SwipeCardsProps<T>) {\n const [index, setIndex] = useState(0)\n const [exitDir, setExitDir] = useState<'left' | 'right' | null>(null)\n\n const remaining = items.slice(index)\n const isEmpty = remaining.length === 0\n\n const handleSwipe = useCallback((dir: 'left' | 'right') => {\n if (isEmpty) return\n const current = items[index]\n setExitDir(dir)\n const timer = setTimeout(() => {\n setExitDir(null)\n setIndex((i) => {\n const next = i + 1\n if (next >= items.length) onEmpty?.()\n return next\n })\n dir === 'left' ? onSwipeLeft?.(current) : onSwipeRight?.(current)\n }, 250)\n return () => clearTimeout(timer)\n }, [isEmpty, index, items, onEmpty, onSwipeLeft, onSwipeRight])\n\n if (isEmpty) {\n return (\n <YStack flex={1} alignItems=\"center\" justifyContent=\"center\" gap=\"$3\" padding=\"$4\">\n <SizableText size=\"$5\" color=\"$color8\">{emptyMessage}</SizableText>\n </YStack>\n )\n }\n\n return (\n <YStack flex={1} gap=\"$4\">\n <YStack flex={1} alignItems=\"center\" justifyContent=\"center\">\n <YStack width=\"100%\" maxWidth={340} aspectRatio={3 / 4} position=\"relative\">\n {remaining.slice(0, STACK_SIZE).reverse().map((item, reverseIdx) => {\n const stackIdx = Math.min(remaining.length, STACK_SIZE) - 1 - reverseIdx\n const isTop = stackIdx === 0\n const offset = CARD_OFFSETS[stackIdx] ?? CARD_OFFSETS[2]\n const exitX = exitDir === 'left' ? -400 : exitDir === 'right' ? 400 : 0\n const exitRotate = exitDir === 'left' ? '-15deg' : exitDir === 'right' ? '15deg' : '0deg'\n\n return (\n <YStack key={item.id} position=\"absolute\" top={0} left={0} right={0} bottom={0}\n animation=\"quick\" borderRadius=\"$5\" overflow=\"hidden\" backgroundColor=\"$background\"\n elevate={isTop} shadowColor=\"$shadowColor\" shadowRadius={isTop ? 16 : 4}\n scale={isTop && exitDir ? 1 : offset.scale}\n opacity={isTop && exitDir ? 0 : offset.opacity}\n y={isTop && exitDir ? 0 : offset.y}\n x={isTop ? exitX : 0}\n rotate={isTop ? exitRotate : '0deg'}>\n {renderCard(item)}\n {isTop && exitDir === 'left' && (\n <YStack position=\"absolute\" top=\"$4\" right=\"$4\" borderWidth={3}\n borderColor=\"$red10\" borderRadius=\"$3\" padding=\"$2\" rotate=\"15deg\">\n <SizableText size=\"$7\" fontWeight=\"800\" color=\"$red10\">{leftLabel.toUpperCase()}</SizableText>\n </YStack>\n )}\n {isTop && exitDir === 'right' && (\n <YStack position=\"absolute\" top=\"$4\" left=\"$4\" borderWidth={3}\n borderColor=\"$green10\" borderRadius=\"$3\" padding=\"$2\" rotate=\"-15deg\">\n <SizableText size=\"$7\" fontWeight=\"800\" color=\"$green10\">{rightLabel.toUpperCase()}</SizableText>\n </YStack>\n )}\n </YStack>\n )\n })}\n </YStack>\n </YStack>\n <XStack justifyContent=\"center\" gap=\"$6\" paddingBottom=\"$4\">\n <Circle size={60} backgroundColor=\"$red3\" borderWidth={2} borderColor=\"$red7\"\n pressStyle={{ scale: 0.9, backgroundColor: '$red5' }} animation=\"quick\"\n onPress={() => handleSwipe('left')} alignItems=\"center\" justifyContent=\"center\">\n <SizableText size=\"$6\" color=\"$red10\" fontWeight=\"700\">✕</SizableText>\n </Circle>\n <Circle size={60} backgroundColor=\"$green3\" borderWidth={2} borderColor=\"$green7\"\n pressStyle={{ scale: 0.9, backgroundColor: '$green5' }} animation=\"quick\"\n onPress={() => handleSwipe('right')} alignItems=\"center\" justifyContent=\"center\">\n <SizableText size=\"$6\" color=\"$green10\" fontWeight=\"700\">♥</SizableText>\n </Circle>\n </XStack>\n </YStack>\n )\n}\n","import type { ReactNode } from 'react'\nimport { styled, YStack } from 'tamagui'\n\nexport type GlassCardProps = {\n children: ReactNode\n intensity?: 'light' | 'medium' | 'heavy'\n tint?: 'light' | 'dark'\n borderRadius?: number | string\n padding?: number | string\n elevated?: boolean\n}\n\nconst BLUR: Record<string, number> = { light: 8, medium: 16, heavy: 24 }\nconst TINT_BG: Record<string, string> = {\n light: 'rgba(255,255,255,0.15)',\n dark: 'rgba(0,0,0,0.25)',\n}\n\nconst GlassFrame = styled(YStack, {\n borderWidth: 1,\n borderColor: 'rgba(255,255,255,0.2)',\n overflow: 'hidden',\n})\n\nexport function GlassCard({\n children,\n intensity = 'medium',\n tint = 'light',\n borderRadius = '$4',\n padding = '$4',\n elevated = false,\n}: GlassCardProps) {\n const blur = BLUR[intensity]\n\n return (\n <GlassFrame\n borderRadius={borderRadius as any}\n padding={padding as any}\n backgroundColor={TINT_BG[tint]}\n elevate={elevated}\n shadowColor={elevated ? '$shadowColor' : undefined}\n shadowRadius={elevated ? 20 : undefined}\n shadowOpacity={elevated ? 0.3 : undefined}\n // @ts-ignore — backdropFilter supported on web + iOS\n style={{ backdropFilter: `blur(${blur}px)`, WebkitBackdropFilter: `blur(${blur}px)` }}\n >\n {children}\n </GlassFrame>\n )\n}\n"],"mappings":"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","names":["Image","import_v5","import_tamagui","import_tamagui","TamaguiButton","import_tamagui","import_tamagui","import_tamagui","TamaguiInput","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_tamagui","Image","TamaguiImage","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_react_native","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_react_native","import_jsx_runtime","import_tamagui","import_react_native","import_jsx_runtime","import_tamagui","import_jsx_runtime","CardContent","import_tamagui","import_jsx_runtime","PlanCard","import_react","import_tamagui","import_jsx_runtime","useCountdown","import_tamagui","import_jsx_runtime","Stars","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","sizes","import_react","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/config/tamagui.config.ts","../src/primitives/Button.tsx","../src/primitives/Text.tsx","../src/primitives/Card.tsx","../src/primitives/Input.tsx","../src/primitives/Avatar.tsx","../src/interface/Headings.tsx","../src/interface/PageContainer.tsx","../src/interface/Dialog.tsx","../src/interface/Pressable.tsx","../src/interface/Image.tsx","../src/interface/Badge.tsx","../src/interface/Icon.tsx","../src/interface/BlinkAccordion.tsx","../src/interface/BlinkTabs.tsx","../src/interface/BlinkToggleGroup.tsx","../src/interface/BlinkToast.tsx","../src/interface/FormField.tsx","../src/interface/Tooltip.tsx","../src/layouts/StepPageLayout.tsx","../src/layouts/ScreenLayout.tsx","../src/layouts/Section.tsx","../src/layouts/ListItem.tsx","../src/layouts/Divider.tsx","../src/layouts/KeyboardStickyFooter.tsx","../src/layouts/SafeArea.tsx","../src/layouts/Grid.tsx","../src/patterns/PaywallScreen.tsx","../src/patterns/OnboardingCarousel.tsx","../src/patterns/ChatBubble.tsx","../src/patterns/SettingsScreen.tsx","../src/patterns/EmptyState.tsx","../src/patterns/ProfileHeader.tsx","../src/patterns/AppHeader.tsx","../src/patterns/BottomSheet.tsx","../src/patterns/LoginScreen.tsx","../src/patterns/TabBar.tsx","../src/patterns/SearchBar.tsx","../src/patterns/FloatingActionButton.tsx","../src/patterns/ActionSheet.tsx","../src/patterns/Skeleton.tsx","../src/patterns/NotificationBanner.tsx","../src/patterns/ProgressSteps.tsx","../src/patterns/SwipeableRow.tsx","../src/patterns/MediaCard.tsx","../src/patterns/Carousel.tsx","../src/patterns/PullToRefresh.tsx","../src/patterns/ProductCard.tsx","../src/patterns/PricingTable.tsx","../src/patterns/CountdownBanner.tsx","../src/patterns/TestimonialCard.tsx","../src/patterns/ConfirmDialog.tsx","../src/patterns/Chip.tsx","../src/patterns/OTPInput.tsx","../src/patterns/PasswordInput.tsx","../src/patterns/AvatarGroup.tsx","../src/patterns/SwipeCards.tsx","../src/patterns/GlassCard.tsx","../src/patterns/DataTable.tsx","../src/patterns/DatePicker.tsx","../src/patterns/EventCard.tsx","../src/patterns/UserPreferences.tsx"],"sourcesContent":["// Config\nexport { blinkConfig } from './config/tamagui.config'\nexport type { BlinkConfig } from './config/tamagui.config'\nexport { defaultConfig as tamaguiDefaultConfig } from '@tamagui/config/v5'\n\n// ─── Tamagui re-exports (full component library) ────────────────────────────\nexport {\n // Layout primitives\n View, Stack, SizableStack, ThemeableStack, Frame,\n XStack, YStack, ZStack, ScrollView,\n Circle, Square, Spacer, EnsureFlexed,\n // Groups\n Group, XGroup, YGroup,\n // Semantic HTML elements\n Header, Footer, Main, Nav, Article, Aside,\n // Text\n H1, H2, H3, H4, H5, H6, Heading, Paragraph, SizableText, Text, Label,\n // Forms\n Button, Input, TextArea, Switch, Checkbox, Slider, RadioGroup, Select, Fieldset, Form,\n // Display\n Card, Avatar, Separator, Image as TamaguiImage, Progress, Spinner,\n ListItem as TamaguiListItem, Anchor,\n // Overlay & portals\n Sheet, Dialog, AlertDialog, Popover, Tooltip, TooltipSimple,\n Portal, PortalHost, PortalItem, PortalProvider,\n // Navigation (composable Tamagui components)\n Tabs, Accordion, ToggleGroup,\n // Animation\n AnimatePresence,\n // Adapt\n Adapt,\n // Utilities\n VisuallyHidden, Unspaced,\n // Theme & config\n Theme, TamaguiProvider, TamaguiProvider as BlinkProvider,\n createTamagui, createFont, createMedia, createTheme, createTokens,\n createVariable, createStyledContext,\n addTheme, updateTheme, replaceTheme,\n // Styled\n styled, withStaticProperties,\n // Platform\n isWeb, isClient,\n // Token & config access\n getConfig, getToken, getTokens, getTokenValue,\n // Ref & event utilities\n composeRefs, composeEventHandlers,\n // Hooks\n useTheme, useMedia, useThemeName,\n useControllableState, useEvent, useForceUpdate,\n useIsomorphicLayoutEffect, useComposedRefs,\n useWindowDimensions, useDidFinishSSR,\n useDebounce, useDebounceValue,\n usePresence, useIsPresent,\n // Types\n type GetProps, type SizeTokens, type ColorTokens, type ThemeTokens,\n} from 'tamagui'\n\n// ─── Blink styled primitives (named to avoid Tamagui conflicts) ──────────────\nexport { Button as BlinkButton } from './primitives/Button'\nexport type { ButtonProps as BlinkButtonProps } from './primitives/Button'\n\nexport { BlinkText } from './primitives/Text'\nexport type { BlinkTextProps } from './primitives/Text'\n\nexport { Card as BlinkCard } from './primitives/Card'\nexport type { CardProps as BlinkCardProps } from './primitives/Card'\n\nexport { Input as BlinkInput } from './primitives/Input'\nexport type { InputProps as BlinkInputProps } from './primitives/Input'\n\nexport { Avatar as BlinkAvatar } from './primitives/Avatar'\nexport type { AvatarProps as BlinkAvatarProps } from './primitives/Avatar'\n\n// ─── Blink interface components ──────────────────────────────────────────────\nexport { SubHeading, SepHeading } from './interface/Headings'\nexport { PageContainer, PageMainContainer } from './interface/PageContainer'\nexport { DialogProvider, showError, dialogConfirm } from './interface/Dialog'\nexport { Pressable } from './interface/Pressable'\nexport { Image } from './interface/Image'\nexport { Badge } from './interface/Badge'\nexport type { BadgeProps } from './interface/Badge'\n\nexport { Icon, ICONS } from './interface/Icon'\nexport type { IconName, IconProps } from './interface/Icon'\n\nexport { BlinkAccordion } from './interface/BlinkAccordion'\nexport type { BlinkAccordionProps, BlinkAccordionItem } from './interface/BlinkAccordion'\n\nexport { BlinkTabs } from './interface/BlinkTabs'\nexport type { BlinkTabsProps, BlinkTabItem } from './interface/BlinkTabs'\n\nexport { BlinkToggleGroup } from './interface/BlinkToggleGroup'\nexport type { BlinkToggleGroupProps, BlinkToggleOption } from './interface/BlinkToggleGroup'\n\nexport { BlinkToastProvider, useBlinkToast, toast } from './interface/BlinkToast'\nexport type { BlinkToastVariant, BlinkToastData, BlinkToastOptions, BlinkToastContextType } from './interface/BlinkToast'\n\nexport { FormField } from './interface/FormField'\nexport type { FormFieldProps } from './interface/FormField'\n\nexport { BlinkTooltip } from './interface/Tooltip'\nexport type { TooltipProps } from './interface/Tooltip'\n\n// ─── Blink layouts ───────────────────────────────────────────────────────────\nexport { StepPageLayout } from './layouts/StepPageLayout'\nexport type { StepPageProps } from './layouts/StepPageLayout'\n\nexport { ScreenLayout } from './layouts/ScreenLayout'\n\nexport { Section } from './layouts/Section'\nexport type { SectionProps } from './layouts/Section'\n\nexport { ListItem } from './layouts/ListItem'\nexport type { ListItemProps } from './layouts/ListItem'\n\nexport { Divider } from './layouts/Divider'\nexport type { DividerProps } from './layouts/Divider'\n\nexport { KeyboardStickyFooter } from './layouts/KeyboardStickyFooter'\nexport type { KeyboardStickyFooterProps } from './layouts/KeyboardStickyFooter'\n\nexport { SafeArea } from './layouts/SafeArea'\nexport type { SafeAreaProps } from './layouts/SafeArea'\n\nexport { Grid, Container } from './layouts/Grid'\nexport type { GridProps, ContainerProps } from './layouts/Grid'\n\n// ─── Blink patterns ─────────────────────────────────────────────────────────\nexport { PaywallScreen } from './patterns/PaywallScreen'\nexport type { PaywallScreenProps, PlanOption } from './patterns/PaywallScreen'\n\nexport { OnboardingCarousel } from './patterns/OnboardingCarousel'\nexport type { OnboardingCarouselProps, OnboardingStep } from './patterns/OnboardingCarousel'\n\nexport { ChatBubble } from './patterns/ChatBubble'\nexport type { ChatBubbleProps, ChatMessage } from './patterns/ChatBubble'\n\nexport { SettingsScreen } from './patterns/SettingsScreen'\nexport type { SettingsScreenProps, SettingsSection, SettingsItem } from './patterns/SettingsScreen'\n\nexport { EmptyState } from './patterns/EmptyState'\nexport type { EmptyStateProps } from './patterns/EmptyState'\n\nexport { ProfileHeader } from './patterns/ProfileHeader'\nexport type { ProfileHeaderProps } from './patterns/ProfileHeader'\n\nexport { AppHeader } from './patterns/AppHeader'\nexport type { AppHeaderProps, AppHeaderVariant } from './patterns/AppHeader'\n\nexport { BottomSheet } from './patterns/BottomSheet'\nexport type { BottomSheetProps } from './patterns/BottomSheet'\n\nexport { LoginScreen } from './patterns/LoginScreen'\nexport type { LoginScreenProps, AuthProvider } from './patterns/LoginScreen'\n\nexport { TabBar } from './patterns/TabBar'\nexport type { TabBarProps, TabBarItem } from './patterns/TabBar'\n\nexport { SearchBar } from './patterns/SearchBar'\nexport type { SearchBarProps } from './patterns/SearchBar'\n\nexport { FloatingActionButton } from './patterns/FloatingActionButton'\nexport type { FABProps } from './patterns/FloatingActionButton'\n\nexport { ActionSheet } from './patterns/ActionSheet'\nexport type { ActionSheetProps, ActionSheetItem } from './patterns/ActionSheet'\n\nexport { Skeleton } from './patterns/Skeleton'\nexport type { SkeletonProps } from './patterns/Skeleton'\n\nexport { NotificationBanner } from './patterns/NotificationBanner'\nexport type { NotificationBannerProps } from './patterns/NotificationBanner'\n\nexport { ProgressSteps } from './patterns/ProgressSteps'\nexport type { ProgressStepsProps } from './patterns/ProgressSteps'\n\nexport { SwipeableRow } from './patterns/SwipeableRow'\nexport type { SwipeableRowProps, SwipeAction } from './patterns/SwipeableRow'\n\nexport { MediaCard } from './patterns/MediaCard'\nexport type { MediaCardProps } from './patterns/MediaCard'\n\nexport { Carousel } from './patterns/Carousel'\nexport type { CarouselProps } from './patterns/Carousel'\n\nexport { PullToRefresh } from './patterns/PullToRefresh'\nexport type { PullToRefreshProps } from './patterns/PullToRefresh'\n\nexport { ProductCard } from './patterns/ProductCard'\nexport type { ProductCardProps } from './patterns/ProductCard'\n\nexport { PricingTable } from './patterns/PricingTable'\nexport type { PricingTableProps, PricingPlan } from './patterns/PricingTable'\n\nexport { CountdownBanner } from './patterns/CountdownBanner'\nexport type { CountdownBannerProps } from './patterns/CountdownBanner'\n\nexport { TestimonialCard } from './patterns/TestimonialCard'\nexport type { TestimonialCardProps } from './patterns/TestimonialCard'\n\nexport { ConfirmDialog } from './patterns/ConfirmDialog'\nexport type { ConfirmDialogProps } from './patterns/ConfirmDialog'\n\nexport { Chip, ChipGroup } from './patterns/Chip'\nexport type { ChipProps, ChipGroupProps } from './patterns/Chip'\n\nexport { OTPInput } from './patterns/OTPInput'\nexport type { OTPInputProps } from './patterns/OTPInput'\n\nexport { PasswordInput } from './patterns/PasswordInput'\nexport type { PasswordInputProps } from './patterns/PasswordInput'\n\nexport { AvatarGroup } from './patterns/AvatarGroup'\nexport type { AvatarGroupProps } from './patterns/AvatarGroup'\n\nexport { SwipeCards } from './patterns/SwipeCards'\nexport type { SwipeCardsProps, SwipeCardItem } from './patterns/SwipeCards'\n\nexport { GlassCard } from './patterns/GlassCard'\nexport type { GlassCardProps } from './patterns/GlassCard'\n\nexport { DataTable, StatusBadge } from './patterns/DataTable'\nexport type { DataTableProps, DataTableColumn } from './patterns/DataTable'\n\nexport { DatePicker } from './patterns/DatePicker'\nexport type { DatePickerProps } from './patterns/DatePicker'\n\nexport { EventCard } from './patterns/EventCard'\nexport type { EventCardProps } from './patterns/EventCard'\n\nexport { UserPreferences } from './patterns/UserPreferences'\nexport type { UserPreferencesProps, PreferenceSection, PreferenceItem } from './patterns/UserPreferences'\n","import { defaultConfig } from '@tamagui/config/v5'\nimport { createTamagui, type TamaguiInternalConfig } from 'tamagui'\n\nexport const blinkConfig: TamaguiInternalConfig = createTamagui({\n ...defaultConfig,\n})\n\nexport type BlinkConfig = typeof blinkConfig\n\ndeclare module 'tamagui' {\n interface TamaguiCustomConfig extends BlinkConfig {}\n}\n","import { Button as TamaguiButton, styled, type GetProps } from 'tamagui'\n\nexport const Button = styled(TamaguiButton, {\n borderWidth: 0,\n cursor: 'pointer',\n focusVisibleStyle: {\n outlineWidth: 2,\n outlineStyle: 'solid',\n outlineColor: '$color8',\n },\n\n variants: {\n variant: {\n default: {\n backgroundColor: '$color3',\n hoverStyle: { backgroundColor: '$color4' },\n pressStyle: { backgroundColor: '$color2', opacity: 0.8 },\n },\n primary: {\n backgroundColor: '$color9',\n color: '$color1',\n hoverStyle: { backgroundColor: '$color10' },\n pressStyle: { backgroundColor: '$color8', opacity: 0.9 },\n },\n outlined: {\n backgroundColor: 'transparent',\n borderWidth: 2,\n borderColor: '$color6',\n hoverStyle: { borderColor: '$color8' },\n pressStyle: { borderColor: '$color4', opacity: 0.8 },\n },\n transparent: {\n backgroundColor: 'transparent',\n hoverStyle: { backgroundColor: '$color2' },\n pressStyle: { backgroundColor: '$color1', opacity: 0.8 },\n },\n floating: {\n backgroundColor: '$color4',\n shadowColor: '$shadow2',\n shadowRadius: 5,\n shadowOffset: { height: 2, width: 0 },\n hoverStyle: { backgroundColor: '$color5' },\n pressStyle: { backgroundColor: '$color3', opacity: 0.9 },\n },\n destructive: {\n backgroundColor: '$red9',\n color: '$color1',\n hoverStyle: { backgroundColor: '$red10' },\n pressStyle: { backgroundColor: '$red8', opacity: 0.9 },\n },\n },\n size: {\n sm: { height: '$3', paddingHorizontal: '$3', borderRadius: '$3' },\n md: { height: '$4', paddingHorizontal: '$4', borderRadius: '$4' },\n lg: { height: '$5', paddingHorizontal: '$5', borderRadius: '$5' },\n },\n fullWidth: {\n true: { width: '100%' },\n },\n } as const,\n\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n})\n\nexport type ButtonProps = GetProps<typeof Button>\n","import { SizableText, styled, type GetProps } from 'tamagui'\n\nexport const BlinkText = styled(SizableText, {\n name: 'BlinkText',\n\n variants: {\n variant: {\n display: { size: '$10', fontWeight: '800' },\n h1: { size: '$9', fontWeight: '700' },\n h2: { size: '$8', fontWeight: '700' },\n h3: { size: '$7', fontWeight: '600' },\n h4: { size: '$6', fontWeight: '600' },\n body: { size: '$5', fontWeight: '400' },\n bodySmall: { size: '$4', fontWeight: '400' },\n caption: { size: '$3', fontWeight: '400', color: '$color10' },\n small: { size: '$2', fontWeight: '400', color: '$color9' },\n },\n muted: {\n true: { color: '$color9' },\n },\n secondary: {\n true: { color: '$color10' },\n },\n center: {\n true: { textAlign: 'center' },\n },\n bold: {\n true: { fontWeight: '700' },\n },\n } as const,\n\n defaultVariants: {\n variant: 'body',\n },\n})\n\nexport type BlinkTextProps = GetProps<typeof BlinkText>\n","import { styled, View, GetProps, withStaticProperties } from 'tamagui'\n\nconst CardFrame = styled(View, {\n name: 'BlinkCard',\n backgroundColor: '$color2',\n borderRadius: '$4',\n overflow: 'hidden',\n\n variants: {\n variant: {\n flat: {},\n elevated: {\n shadowColor: '$shadow2',\n shadowOffset: { width: 0, height: 2 },\n shadowRadius: 8,\n elevation: 3,\n },\n outlined: {\n borderWidth: 1,\n borderColor: '$color5',\n },\n },\n size: {\n sm: { borderRadius: '$3', padding: '$3' },\n md: { borderRadius: '$4', padding: '$4' },\n lg: { borderRadius: '$5', padding: '$5' },\n },\n pressable: {\n true: {\n pressStyle: { scale: 0.98, opacity: 0.9 },\n cursor: 'pointer',\n },\n },\n } as const,\n\n defaultVariants: {\n variant: 'flat',\n size: 'md',\n },\n})\n\nconst CardHeader = styled(View, { name: 'BlinkCardHeader', paddingBottom: '$3' })\nconst CardContent = styled(View, { name: 'BlinkCardContent' })\nconst CardFooter = styled(View, {\n name: 'BlinkCardFooter',\n paddingTop: '$3',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '$2',\n})\n\nexport type CardProps = GetProps<typeof CardFrame>\n\nexport const Card = withStaticProperties(CardFrame, {\n Header: CardHeader,\n Content: CardContent,\n Footer: CardFooter,\n})\n","import { Input as TamaguiInput, styled, View, SizableText, type GetProps } from 'tamagui'\n\nconst InputFrame = styled(View, {\n name: 'BlinkInputFrame',\n gap: '$1.5',\n})\n\nconst InputLabel = styled(SizableText, {\n name: 'BlinkInputLabel',\n size: '$4',\n fontWeight: '500',\n color: '$color11',\n})\n\nconst InputField = styled(TamaguiInput, {\n name: 'BlinkInput',\n height: 50,\n size: '$5',\n borderWidth: 0.5,\n borderColor: '$color5',\n borderRadius: '$4',\n backgroundColor: '$color1',\n placeholderTextColor: '$color8',\n\n focusVisibleStyle: {\n outlineWidth: 3,\n outlineStyle: 'solid',\n outlineColor: '$background04',\n outlineOffset: 1,\n borderWidth: 0.5,\n borderColor: '$color7',\n },\n\n variants: {\n hasError: {\n true: {\n borderColor: '$red9',\n focusVisibleStyle: { borderColor: '$red9' },\n },\n },\n variant: {\n default: {},\n filled: {\n backgroundColor: '$color2',\n borderColor: 'transparent',\n focusVisibleStyle: { borderColor: '$color7' },\n },\n },\n } as const,\n\n defaultVariants: { variant: 'default' },\n})\n\nconst InputError = styled(SizableText, { name: 'BlinkInputError', size: '$2', color: '$red10' })\nconst InputHint = styled(SizableText, { name: 'BlinkInputHint', size: '$2', color: '$color9' })\n\nexport type InputProps = GetProps<typeof InputField> & {\n label?: string\n error?: string\n hint?: string\n}\n\nexport function Input({ label, error, hint, ...props }: InputProps) {\n return (\n <InputFrame>\n {label && <InputLabel>{label}</InputLabel>}\n <InputField hasError={!!error} {...props} />\n {error && <InputError>{error}</InputError>}\n {hint && !error && <InputHint>{hint}</InputHint>}\n </InputFrame>\n )\n}\n","import { memo } from 'react'\nimport { Circle, Image, SizableText } from 'tamagui'\n\ntype SimpleSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nconst simpleSizes: Record<SimpleSize, number> = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 64,\n}\n\nfunction getSize(size: number | SimpleSize): number {\n if (typeof size === 'number') return size\n return simpleSizes[size] ?? 40\n}\n\nexport type AvatarProps = {\n uri?: string\n name?: string\n size?: number | SimpleSize\n}\n\nexport const Avatar = memo(({ uri, name, size: sizeIn = 'md' }: AvatarProps) => {\n const size = getSize(sizeIn)\n\n return (\n <Circle\n size={size}\n overflow=\"hidden\"\n backgroundColor=\"$color4\"\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n {uri ? (\n <Image\n source={{ uri }}\n width={size}\n height={size}\n objectFit=\"cover\"\n />\n ) : (\n <SizableText\n size=\"$3\"\n fontWeight=\"600\"\n color=\"$color11\"\n >\n {name ? name.split(' ').map(p => p[0]).join('').toUpperCase().slice(0, 2) : '?'}\n </SizableText>\n )}\n </Circle>\n )\n})\n","import { Separator, SizableText, XStack, styled } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport const H1 = styled(SizableText, {\n name: 'BlinkH1',\n role: 'heading',\n fontFamily: '$heading',\n size: '$10',\n fontWeight: '700',\n})\n\nexport const H2 = styled(SizableText, {\n name: 'BlinkH2',\n role: 'heading',\n fontFamily: '$heading',\n size: '$9',\n fontWeight: '700',\n})\n\nexport const H3 = styled(SizableText, {\n name: 'BlinkH3',\n role: 'heading',\n fontFamily: '$heading',\n size: '$8',\n fontWeight: '600',\n})\n\nexport const H4 = styled(SizableText, {\n name: 'BlinkH4',\n role: 'heading',\n fontFamily: '$heading',\n size: '$6',\n fontWeight: '600',\n})\n\nexport const H5 = styled(SizableText, {\n name: 'BlinkH5',\n role: 'heading',\n fontFamily: '$heading',\n size: '$5',\n fontWeight: '500',\n})\n\nexport const H6 = styled(SizableText, {\n name: 'BlinkH6',\n role: 'heading',\n fontFamily: '$heading',\n size: '$4',\n fontWeight: '500',\n})\n\nexport const SubHeading = styled(SizableText, {\n name: 'BlinkSubHeading',\n size: '$5',\n color: '$color10',\n fontWeight: '300',\n $lg: { size: '$6' },\n})\n\nexport function SepHeading({ children }: { children: ReactNode }) {\n return (\n <XStack marginTop=\"$6\" marginBottom=\"$4\" alignItems=\"center\" gap=\"$6\">\n <H3 size=\"$4\" color=\"$color10\">\n {children}\n </H3>\n <Separator opacity={0.5} />\n </XStack>\n )\n}\n","import { styled, YStack } from 'tamagui'\n\nexport const PageContainer = styled(YStack, {\n name: 'BlinkPageContainer',\n position: 'relative',\n marginHorizontal: 'auto',\n flex: 1,\n flexBasis: 'auto',\n paddingHorizontal: '$4',\n width: '100%',\n minWidth: 380,\n $md: { maxWidth: 760 },\n $lg: { maxWidth: 860 },\n $xl: { maxWidth: 1140 },\n})\n\nexport const PageMainContainer = styled(PageContainer, {\n name: 'BlinkPageMainContainer',\n role: 'main',\n})\n","import { useState, useEffect, type ReactNode } from 'react'\nimport { AlertDialog, Button, XStack, YStack } from 'tamagui'\n\ntype DialogState = {\n type: 'error' | 'confirm' | null\n title: string\n description: string\n resolve?: (value: boolean) => void\n}\n\nlet globalShowDialog: ((\n state: Omit<DialogState, 'resolve'> & { resolve?: (value: boolean) => void }\n) => void) | null = null\n\nexport function DialogProvider({ children }: { children: ReactNode }) {\n const [state, setState] = useState<DialogState>({\n type: null,\n title: '',\n description: '',\n })\n\n useEffect(() => {\n globalShowDialog = (newState) =>\n setState({ ...newState, resolve: newState.resolve } as DialogState)\n return () => {\n globalShowDialog = null\n }\n }, [])\n\n const handleClose = (confirmed: boolean) => {\n if (!state.resolve) return\n const resolve = state.resolve\n setState({ type: null, title: '', description: '' })\n resolve(confirmed)\n }\n\n return (\n <>\n {children}\n <AlertDialog\n open={state.type !== null}\n onOpenChange={(open) => {\n if (!open && state.type !== null) handleClose(false)\n }}\n >\n <AlertDialog.Portal>\n <AlertDialog.Overlay\n key=\"overlay\"\n opacity={0.5}\n enterStyle={{ opacity: 0 }}\n exitStyle={{ opacity: 0 }}\n />\n <AlertDialog.Content\n bordered\n elevate\n key=\"content\"\n enterStyle={{ x: 0, y: -20, opacity: 0, scale: 0.9 }}\n exitStyle={{ x: 0, y: 10, opacity: 0, scale: 0.95 }}\n x={0}\n scale={1}\n opacity={1}\n y={0}\n width=\"90%\"\n maxWidth={400}\n >\n <YStack gap=\"$4\">\n <AlertDialog.Title size=\"$6\">{state.title}</AlertDialog.Title>\n <AlertDialog.Description size=\"$3\" color=\"$color11\">\n {state.description}\n </AlertDialog.Description>\n <XStack gap=\"$3\" justifyContent=\"flex-end\">\n {state.type === 'confirm' ? (\n <>\n <Button onPress={() => handleClose(false)}>Cancel</Button>\n <Button theme=\"blue\" onPress={() => handleClose(true)}>\n Confirm\n </Button>\n </>\n ) : (\n <Button theme=\"blue\" onPress={() => handleClose(false)}>\n OK\n </Button>\n )}\n </XStack>\n </YStack>\n </AlertDialog.Content>\n </AlertDialog.Portal>\n </AlertDialog>\n </>\n )\n}\n\nexport const showError = (error: unknown, title = 'Error') => {\n let description = 'An unexpected error occurred'\n if (error instanceof Error) description = error.message\n else if (typeof error === 'string') description = error\n else if (error && typeof error === 'object' && 'message' in error)\n description = String(error.message)\n\n if (globalShowDialog) globalShowDialog({ type: 'error', title, description })\n else console.error(`${title}: ${description}`)\n}\n\nexport const dialogConfirm = async (props: {\n title?: string\n description?: string\n}): Promise<boolean> => {\n const { title = 'Confirm', description = 'Are you sure?' } = props\n if (!globalShowDialog) {\n console.error('DialogProvider not mounted')\n return false\n }\n return new Promise<boolean>((resolve) => {\n globalShowDialog!({ type: 'confirm', title, description, resolve })\n })\n}\n","import { styled, View } from 'tamagui'\n\nexport const Pressable = styled(View, {\n name: 'BlinkPressable',\n hitSlop: 10,\n pressStyle: { opacity: 0.5 },\n})\n","import { styled, Image as TamaguiImage } from 'tamagui'\n\nexport const Image = styled(TamaguiImage, {\n name: 'BlinkImage',\n})\n","import { styled, SizableText, View } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nconst BadgeFrame = styled(View, {\n name: 'BlinkBadge',\n paddingHorizontal: '$2',\n paddingVertical: '$1',\n borderRadius: '$10',\n backgroundColor: '$color3',\n alignSelf: 'flex-start',\n variants: {\n variant: {\n default: { backgroundColor: '$color3' },\n success: { backgroundColor: '$green3' },\n warning: { backgroundColor: '$yellow3' },\n error: { backgroundColor: '$red3' },\n info: { backgroundColor: '$blue3' },\n },\n } as const,\n defaultVariants: { variant: 'default' },\n})\n\nconst BadgeText = styled(SizableText, {\n name: 'BlinkBadgeText',\n size: '$2',\n fontWeight: '600',\n color: '$color11',\n})\n\nexport type BadgeProps = {\n children: ReactNode\n variant?: 'default' | 'success' | 'warning' | 'error' | 'info'\n}\n\nexport function Badge({ children, variant = 'default' }: BadgeProps) {\n return (\n <BadgeFrame variant={variant}>\n <BadgeText>{children}</BadgeText>\n </BadgeFrame>\n )\n}\n","import { SizableText } from 'tamagui'\n\nexport const ICONS = {\n home: '\\u2302', search: '\\u2315', back: '\\u2039', forward: '\\u203A',\n close: '\\u2715', menu: '\\u2630', more: '\\u22EF', plus: '+',\n minus: '\\u2212', check: '\\u2713', star: '\\u2605', starOutline: '\\u2606',\n heart: '\\u2665', heartOutline: '\\u2661', share: '\\u2934', edit: '\\u270E',\n trash: '\\u232B', copy: '\\u2398', chat: '\\u{1F4AC}', mail: '\\u2709',\n bell: '\\u{1F514}', bellOff: '\\u{1F515}', send: '\\u27A4', play: '\\u25B6',\n pause: '\\u23F8', camera: '\\u{1F4F7}', image: '\\u{1F5BC}', info: '\\u2139',\n warning: '\\u26A0', error: '\\u2715', success: '\\u2713', loading: '\\u27F3',\n user: '\\u{1F464}', users: '\\u{1F465}', settings: '\\u2699',\n lock: '\\u{1F512}', unlock: '\\u{1F513}',\n arrowUp: '\\u2191', arrowDown: '\\u2193', arrowLeft: '\\u2190', arrowRight: '\\u2192',\n chevronUp: '\\u2303', chevronDown: '\\u2304', chevronLeft: '\\u2039', chevronRight: '\\u203A',\n} as const\n\nexport type IconName = keyof typeof ICONS\nexport type IconProps = { name: IconName; size?: number; color?: string }\n\nexport function Icon({ name, size = 20, color = '$color12' }: IconProps) {\n return (\n <SizableText fontSize={size} lineHeight={size} color={color} textAlign=\"center\" width={size} height={size}>\n {ICONS[name]}\n </SizableText>\n )\n}\n","import { type ReactNode, useState } from 'react'\nimport { Separator, SizableText, XStack, YStack } from 'tamagui'\n\nexport type BlinkAccordionItem = { id: string; title: string; content: ReactNode }\nexport type BlinkAccordionProps = {\n items: BlinkAccordionItem[]\n defaultOpen?: string[]\n allowMultiple?: boolean\n}\n\nexport function BlinkAccordion({ items, defaultOpen, allowMultiple = false }: BlinkAccordionProps) {\n const [openIds, setOpenIds] = useState<string[]>(defaultOpen ?? [])\n const toggle = (id: string) => {\n setOpenIds(prev => {\n if (prev.includes(id)) return prev.filter(i => i !== id)\n return allowMultiple ? [...prev, id] : [id]\n })\n }\n return (\n <YStack>\n {items.map((item, index) => {\n const isOpen = openIds.includes(item.id)\n return (\n <YStack key={item.id}>\n {index > 0 && <Separator borderColor=\"$borderColor\" />}\n <XStack\n paddingVertical=\"$3\" paddingHorizontal=\"$2\"\n justifyContent=\"space-between\" alignItems=\"center\"\n pressStyle={{ opacity: 0.7 }} onPress={() => toggle(item.id)} cursor=\"pointer\"\n >\n <SizableText size=\"$4\" fontWeight=\"600\">{item.title}</SizableText>\n <SizableText size=\"$3\" color=\"$color10\">{isOpen ? '\\u2303' : '\\u2304'}</SizableText>\n </XStack>\n {isOpen && <YStack paddingHorizontal=\"$2\" paddingBottom=\"$3\">{item.content}</YStack>}\n </YStack>\n )\n })}\n </YStack>\n )\n}\n","import { useState } from 'react'\nimport { ScrollView } from 'react-native'\nimport { SizableText, XStack, YStack } from 'tamagui'\n\nexport type BlinkTabItem = { key: string; label: string }\nexport type BlinkTabsProps = {\n tabs: BlinkTabItem[]\n activeTab?: string\n onTabChange?: (key: string) => void\n variant?: 'underline' | 'pill'\n}\n\nexport function BlinkTabs({ tabs, activeTab, onTabChange, variant = 'underline' }: BlinkTabsProps) {\n const [internalActive, setInternalActive] = useState(tabs[0]?.key ?? '')\n const current = activeTab ?? internalActive\n const handlePress = (key: string) => {\n if (!activeTab) setInternalActive(key)\n onTabChange?.(key)\n }\n return (\n <YStack>\n <ScrollView horizontal showsHorizontalScrollIndicator={false}>\n <XStack gap=\"$2\" paddingHorizontal=\"$2\" paddingBottom=\"$2\">\n {tabs.map(tab => {\n const isActive = tab.key === current\n return (\n <YStack\n key={tab.key}\n paddingVertical=\"$2\" paddingHorizontal=\"$3\"\n borderRadius={variant === 'pill' ? '$4' : '$0'}\n backgroundColor={variant === 'pill' && isActive ? '$color9' : 'transparent'}\n borderBottomWidth={variant === 'underline' ? 2 : 0}\n borderBottomColor={variant === 'underline' && isActive ? '$color9' : 'transparent'}\n pressStyle={{ opacity: 0.7 }} onPress={() => handlePress(tab.key)} cursor=\"pointer\"\n >\n <SizableText\n size=\"$3\" fontWeight={isActive ? '600' : '400'}\n color={variant === 'pill' && isActive ? '$color1' : isActive ? '$color12' : '$color10'}\n >\n {tab.label}\n </SizableText>\n </YStack>\n )\n })}\n </XStack>\n </ScrollView>\n </YStack>\n )\n}\n","import { SizableText, XStack } from 'tamagui'\n\nexport type BlinkToggleOption = { value: string; label: string }\nexport type BlinkToggleGroupProps = {\n options: BlinkToggleOption[]\n value: string\n onValueChange: (value: string) => void\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizeMap = { sm: '$2' as const, md: '$3' as const, lg: '$4' as const }\n\nexport function BlinkToggleGroup({ options, value, onValueChange, size = 'md' }: BlinkToggleGroupProps) {\n const textSize = sizeMap[size]\n return (\n <XStack borderRadius=\"$4\" overflow=\"hidden\" backgroundColor=\"$color2\">\n {options.map((option, index) => {\n const isActive = option.value === value\n return (\n <XStack\n key={option.value} flex={1} justifyContent=\"center\" alignItems=\"center\"\n paddingVertical=\"$2\" paddingHorizontal=\"$3\"\n backgroundColor={isActive ? '$color9' : '$color2'}\n borderLeftWidth={index > 0 ? 1 : 0}\n borderLeftColor={isActive ? '$color9' : '$color4'}\n pressStyle={{ opacity: 0.7 }} onPress={() => onValueChange(option.value)} cursor=\"pointer\"\n >\n <SizableText size={textSize} fontWeight={isActive ? '600' : '400'} color={isActive ? '$color1' : '$color11'}>\n {option.label}\n </SizableText>\n </XStack>\n )\n })}\n </XStack>\n )\n}\n","import { useState, useCallback, useEffect, createContext, useContext, type ReactNode } from 'react'\nimport { SizableText, XStack, YStack } from 'tamagui'\n\nexport type BlinkToastVariant = 'default' | 'success' | 'error' | 'warning'\nexport type BlinkToastData = {\n id: string; title: string; message?: string\n variant?: BlinkToastVariant; duration?: number\n}\nexport type BlinkToastOptions = { message?: string; variant?: BlinkToastVariant; duration?: number }\nexport type BlinkToastContextType = {\n show: (title: string, options?: BlinkToastOptions) => void\n}\n\nconst ToastContext = createContext<BlinkToastContextType | null>(null)\n\nconst variantStyles: Record<BlinkToastVariant, { bg: string; border: string; icon: string }> = {\n default: { bg: '$color3', border: '$color6', icon: 'ℹ' },\n success: { bg: '$green2', border: '$green7', icon: '✓' },\n error: { bg: '$red2', border: '$red7', icon: '✕' },\n warning: { bg: '$yellow2', border: '$yellow7', icon: '!' },\n}\n\nlet globalToastShow: BlinkToastContextType['show'] | null = null\n\nexport const toast = (title: string, options?: BlinkToastOptions | BlinkToastVariant) => {\n const opts: BlinkToastOptions | undefined = typeof options === 'string' ? { variant: options } : options\n if (globalToastShow) globalToastShow(title, opts)\n else console.warn('BlinkToastProvider not mounted')\n}\n\nexport function BlinkToastProvider({ children }: { children: ReactNode }) {\n const [toasts, setToasts] = useState<BlinkToastData[]>([])\n\n const show = useCallback((title: string, options?: BlinkToastOptions) => {\n const id = Math.random().toString(36).slice(2, 9)\n const entry: BlinkToastData = {\n id, title,\n message: options?.message,\n variant: options?.variant ?? 'default',\n duration: options?.duration ?? 3000,\n }\n setToasts(prev => [...prev, entry])\n setTimeout(() => setToasts(prev => prev.filter(t => t.id !== id)), entry.duration)\n }, [])\n\n useEffect(() => { globalToastShow = show; return () => { globalToastShow = null } }, [show])\n\n const dismiss = useCallback((id: string) => {\n setToasts(prev => prev.filter(t => t.id !== id))\n }, [])\n\n return (\n <ToastContext.Provider value={{ show }}>\n {children}\n <YStack\n position=\"absolute\" top={50} left={0} right={0}\n alignItems=\"center\" gap=\"$2\" pointerEvents=\"box-none\" zIndex={100000}\n paddingHorizontal=\"$4\"\n >\n {toasts.map(t => {\n const style = variantStyles[t.variant ?? 'default']\n return (\n <XStack\n key={t.id}\n width=\"100%\"\n maxWidth={400}\n backgroundColor={style.bg}\n borderWidth={1}\n borderColor={style.border}\n borderRadius=\"$4\"\n paddingHorizontal=\"$4\"\n paddingVertical=\"$3\"\n gap=\"$3\"\n alignItems=\"flex-start\"\n enterStyle={{ opacity: 0, y: -20, scale: 0.95 }}\n exitStyle={{ opacity: 0, y: -20, scale: 0.95 }}\n opacity={1}\n y={0}\n scale={1}\n animation=\"quick\"\n pointerEvents=\"auto\"\n elevation={4}\n >\n <SizableText size=\"$4\" fontWeight=\"700\" marginTop=\"$0.5\">{style.icon}</SizableText>\n <YStack flex={1} gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"600\" color=\"$color12\">{t.title}</SizableText>\n {t.message && (\n <SizableText size=\"$3\" color=\"$color10\">{t.message}</SizableText>\n )}\n </YStack>\n <SizableText\n size=\"$3\" color=\"$color8\" fontWeight=\"600\"\n pressStyle={{ opacity: 0.5 }}\n onPress={() => dismiss(t.id)}\n cursor=\"pointer\"\n marginTop=\"$0.5\"\n >\n ✕\n </SizableText>\n </XStack>\n )\n })}\n </YStack>\n </ToastContext.Provider>\n )\n}\n\nexport function useBlinkToast() {\n const ctx = useContext(ToastContext)\n if (!ctx) throw new Error('useBlinkToast must be used within BlinkToastProvider')\n return ctx\n}\n","import { type ReactNode } from 'react'\nimport { SizableText, YStack } from 'tamagui'\n\nexport type FormFieldProps = {\n label?: string; error?: string; helperText?: string; required?: boolean; children: ReactNode\n}\n\nexport function FormField({ label, error, helperText, required, children }: FormFieldProps) {\n return (\n <YStack gap=\"$1.5\">\n {label && (\n <SizableText size=\"$3\" fontWeight=\"600\" color=\"$color11\">\n {label}{required && <SizableText color=\"$red9\"> *</SizableText>}\n </SizableText>\n )}\n {children}\n {helperText && !error && <SizableText size=\"$2\" color=\"$color9\">{helperText}</SizableText>}\n {error && <SizableText size=\"$2\" color=\"$red9\">{error}</SizableText>}\n </YStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { Popover, SizableText } from 'tamagui'\n\nexport type TooltipProps = { content: string; children: ReactNode; side?: 'top' | 'bottom' | 'left' | 'right' }\n\nexport function BlinkTooltip({ content, children, side = 'top' }: TooltipProps) {\n return (\n <Popover size=\"$2\" placement={side}>\n <Popover.Trigger asChild>{children}</Popover.Trigger>\n <Popover.Content\n backgroundColor=\"$color11\" borderRadius=\"$2\"\n paddingHorizontal=\"$2.5\" paddingVertical=\"$1.5\" elevate\n enterStyle={{ opacity: 0, y: side === 'bottom' ? -4 : 4 }}\n exitStyle={{ opacity: 0, y: side === 'bottom' ? -4 : 4 }}\n opacity={1} y={0} animation=\"quick\"\n >\n <Popover.Arrow backgroundColor=\"$color11\" size=\"$1\" />\n <SizableText size=\"$2\" color=\"$color1\">{content}</SizableText>\n </Popover.Content>\n </Popover>\n )\n}\n","import { SizableText, YStack } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type StepPageProps = {\n title: string\n description?: string\n children: ReactNode\n bottom?: ReactNode\n}\n\nexport function StepPageLayout({ title, description, children, bottom }: StepPageProps) {\n return (\n <YStack flex={1} padding=\"$4\" maxWidth={500} marginHorizontal=\"auto\" width=\"100%\">\n <YStack gap=\"$5\">\n <YStack gap=\"$2\">\n <SizableText size=\"$8\" fontWeight=\"700\">{title}</SizableText>\n {description && (\n <SizableText size=\"$5\" fontWeight=\"400\" color=\"$color10\">{description}</SizableText>\n )}\n </YStack>\n </YStack>\n <YStack paddingTop=\"$5\" gap=\"$4\">{children}</YStack>\n {bottom && <YStack paddingTop=\"$4\">{bottom}</YStack>}\n </YStack>\n )\n}\n","import { styled, YStack } from 'tamagui'\n\nexport const ScreenLayout = styled(YStack, {\n name: 'BlinkScreenLayout',\n flex: 1,\n backgroundColor: '$background',\n\n variants: {\n padded: {\n true: { padding: '$4' },\n },\n centered: {\n true: { alignItems: 'center', justifyContent: 'center' },\n },\n safe: {\n true: { paddingTop: '$6' },\n },\n } as const,\n})\n","import { SizableText, YStack, type GetProps } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type SectionProps = {\n title?: string\n description?: string\n children: ReactNode\n gap?: GetProps<typeof YStack>['gap']\n}\n\nexport function Section({ title, description, children, gap = '$3' }: SectionProps) {\n return (\n <YStack gap={gap}>\n {title && (\n <YStack gap=\"$1\">\n <SizableText size=\"$5\" fontWeight=\"600\" color=\"$color12\">{title}</SizableText>\n {description && (\n <SizableText size=\"$3\" color=\"$color9\">{description}</SizableText>\n )}\n </YStack>\n )}\n {children}\n </YStack>\n )\n}\n","import { styled, SizableText, XStack, YStack, View } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nconst ListItemFrame = styled(XStack, {\n name: 'BlinkListItem',\n alignItems: 'center',\n gap: '$3',\n padding: '$3',\n borderRadius: '$3',\n\n variants: {\n pressable: {\n true: {\n cursor: 'pointer',\n hoverStyle: { backgroundColor: '$color2' },\n pressStyle: { backgroundColor: '$color3', opacity: 0.9 },\n },\n },\n } as const,\n})\n\nexport type ListItemProps = {\n icon?: ReactNode\n title: string\n subtitle?: string\n right?: ReactNode\n onPress?: () => void\n}\n\nexport function ListItem({ icon, title, subtitle, right, onPress }: ListItemProps) {\n return (\n <ListItemFrame pressable={!!onPress} onPress={onPress}>\n {icon && <View>{icon}</View>}\n <YStack flex={1} gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"500\" color=\"$color12\">{title}</SizableText>\n {subtitle && <SizableText size=\"$2\" color=\"$color9\">{subtitle}</SizableText>}\n </YStack>\n {right}\n </ListItemFrame>\n )\n}\n","import { Separator, SizableText, XStack } from 'tamagui'\n\nexport type DividerProps = {\n label?: string\n}\n\nexport function Divider({ label }: DividerProps) {\n if (!label) return <Separator borderColor=\"$color4\" />\n return (\n <XStack alignItems=\"center\" gap=\"$3\">\n <Separator flex={1} borderColor=\"$color4\" />\n <SizableText size=\"$2\" color=\"$color9\">{label}</SizableText>\n <Separator flex={1} borderColor=\"$color4\" />\n </XStack>\n )\n}\n","import { YStack } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type KeyboardStickyFooterProps = {\n children: ReactNode\n offset?: number\n}\n\nexport function KeyboardStickyFooter({ children, offset }: KeyboardStickyFooterProps) {\n return (\n <YStack maxWidth={500} alignSelf=\"center\" paddingTop=\"$8\" paddingBottom=\"$4\" style={{ paddingBottom: offset }}>\n {children}\n </YStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { YStack } from 'tamagui'\n\nexport type SafeAreaProps = { children: ReactNode; edges?: ('top' | 'bottom' | 'left' | 'right')[] }\n\nexport function SafeArea({ children, edges = ['top', 'bottom'] }: SafeAreaProps) {\n return (\n <YStack\n flex={1} backgroundColor=\"$background\"\n paddingTop={edges.includes('top') ? '$6' : undefined}\n paddingBottom={edges.includes('bottom') ? '$6' : undefined}\n paddingLeft={edges.includes('left') ? '$4' : undefined}\n paddingRight={edges.includes('right') ? '$4' : undefined}\n >\n {children}\n </YStack>\n )\n}\n","import { type ReactNode, Children } from 'react'\nimport { XStack, YStack } from 'tamagui'\n\nexport type GridProps = { children: ReactNode; columns?: number; gap?: string }\nexport type ContainerProps = { children: ReactNode; maxWidth?: number; centered?: boolean; padding?: string }\n\nexport function Grid({ children, columns = 2, gap = '$3' }: GridProps) {\n const items = Children.toArray(children)\n const rows: ReactNode[][] = []\n for (let i = 0; i < items.length; i += columns) {\n rows.push(items.slice(i, i + columns))\n }\n return (\n <YStack gap={gap as any}>\n {rows.map((row, ri) => (\n <XStack key={ri} gap={gap as any}>\n {row.map((item, ci) => (\n <YStack key={ci} flex={1}>{item}</YStack>\n ))}\n {row.length < columns && Array.from({ length: columns - row.length }).map((_, i) => (\n <YStack key={`pad-${i}`} flex={1} />\n ))}\n </XStack>\n ))}\n </YStack>\n )\n}\n\nexport function Container({ children, maxWidth = 500, centered = true, padding = '$4' }: ContainerProps) {\n return (\n <YStack width=\"100%\" maxWidth={maxWidth} alignSelf={centered ? 'center' : undefined} padding={padding as any}>\n {children}\n </YStack>\n )\n}\n","import { useState, useEffect, type ReactNode } from 'react'\nimport { Button, SizableText, XStack, YStack, ScrollView } from 'tamagui'\n\nexport type PlanOption = {\n id: string\n name: string\n price: string\n period: string\n pricePerWeek?: string\n savings?: string\n popular?: boolean\n trial?: string\n features?: string[]\n}\n\nexport type PaywallScreenProps = {\n title?: string\n subtitle?: string\n features?: string[]\n plans: PlanOption[]\n selectedPlan?: string\n onSelectPlan?: (planId: string) => void\n onContinue?: () => void\n onClose?: () => void\n onRestore?: () => void\n onTerms?: () => void\n onPrivacy?: () => void\n continueLabel?: string\n reassurance?: string\n hero?: ReactNode\n socialProof?: string\n countdownMinutes?: number\n badge?: string\n}\n\nfunction useCountdown(minutes?: number) {\n const [seconds, setSeconds] = useState((minutes ?? 0) * 60)\n useEffect(() => {\n if (!minutes) return\n setSeconds(minutes * 60)\n const id = setInterval(() => setSeconds((s) => (s > 0 ? s - 1 : 0)), 1000)\n return () => clearInterval(id)\n }, [minutes])\n const mm = String(Math.floor(seconds / 60)).padStart(2, '0')\n const ss = String(seconds % 60).padStart(2, '0')\n return { display: `${mm}:${ss}`, expired: seconds <= 0 }\n}\n\nfunction PlanCard({ plan, selected, onPress }: { plan: PlanOption; selected: boolean; onPress: () => void }) {\n return (\n <YStack\n flex={1}\n padding=\"$3\"\n borderRadius=\"$5\"\n borderWidth={2}\n borderColor={selected ? '$color9' : '$color5'}\n backgroundColor={selected ? '$color3' : '$color1'}\n pressStyle={{ scale: 0.97, opacity: 0.9 }}\n animation=\"quick\"\n onPress={onPress}\n cursor=\"pointer\"\n position=\"relative\"\n gap=\"$1.5\"\n alignItems=\"center\"\n >\n {plan.popular && (\n <YStack position=\"absolute\" top={-10} backgroundColor=\"$color9\" paddingHorizontal=\"$2\" paddingVertical={2} borderRadius=\"$10\">\n <SizableText size=\"$1\" color=\"white\" fontWeight=\"700\">BEST VALUE</SizableText>\n </YStack>\n )}\n {plan.savings && (\n <YStack position=\"absolute\" top={plan.popular ? -24 : -10} right={6} backgroundColor=\"$green9\" paddingHorizontal=\"$1.5\" paddingVertical={2} borderRadius=\"$10\">\n <SizableText size=\"$1\" color=\"white\" fontWeight=\"700\">{plan.savings}</SizableText>\n </YStack>\n )}\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"$color11\" paddingTop={plan.popular ? '$1' : 0}>\n {plan.name}\n </SizableText>\n <SizableText size=\"$7\" fontWeight=\"800\">{plan.price}</SizableText>\n <SizableText size=\"$2\" color=\"$color9\">/{plan.period}</SizableText>\n {plan.pricePerWeek && <SizableText size=\"$1\" color=\"$color10\">{plan.pricePerWeek}</SizableText>}\n {plan.trial && (\n <YStack backgroundColor=\"$green3\" paddingHorizontal=\"$2\" paddingVertical={2} borderRadius=\"$10\" marginTop=\"$1\">\n <SizableText size=\"$1\" color=\"$green9\" fontWeight=\"700\">{plan.trial}</SizableText>\n </YStack>\n )}\n </YStack>\n )\n}\n\nexport function PaywallScreen({\n title = 'Unlock Premium',\n subtitle,\n features = [],\n plans,\n selectedPlan,\n onSelectPlan,\n onContinue,\n onClose,\n onRestore,\n onTerms,\n onPrivacy,\n continueLabel = 'Continue',\n reassurance = 'Cancel anytime',\n hero,\n socialProof,\n countdownMinutes,\n badge,\n}: PaywallScreenProps) {\n const selected = selectedPlan ?? plans.find((p) => p.popular)?.id ?? plans[0]?.id\n const countdown = useCountdown(countdownMinutes)\n\n return (\n <YStack flex={1} backgroundColor=\"$background\">\n {onClose && (\n <XStack position=\"absolute\" top=\"$4\" right=\"$4\" zIndex={10}>\n <Button size=\"$3\" circular chromeless onPress={onClose} pressStyle={{ opacity: 0.6 }}>\n <SizableText size=\"$5\" color=\"$color9\">✕</SizableText>\n </Button>\n </XStack>\n )}\n\n <ScrollView flex={1} contentContainerStyle={{ paddingBottom: 220 }}>\n <YStack padding=\"$4\" gap=\"$4\" paddingTop=\"$8\">\n {hero && <YStack alignItems=\"center\" paddingVertical=\"$3\">{hero}</YStack>}\n\n {badge && (\n <XStack justifyContent=\"center\">\n <YStack backgroundColor=\"$color9\" paddingHorizontal=\"$3\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$2\" color=\"white\" fontWeight=\"700\">{badge}</SizableText>\n </YStack>\n </XStack>\n )}\n\n <YStack gap=\"$1.5\" alignItems=\"center\">\n <SizableText size=\"$9\" fontWeight=\"800\" textAlign=\"center\">{title}</SizableText>\n {subtitle && <SizableText size=\"$4\" color=\"$color10\" textAlign=\"center\">{subtitle}</SizableText>}\n {socialProof && <SizableText size=\"$3\" color=\"$color9\" fontWeight=\"600\" textAlign=\"center\">{socialProof}</SizableText>}\n </YStack>\n\n {countdownMinutes && !countdown.expired && (\n <XStack justifyContent=\"center\" padding=\"$2\" backgroundColor=\"$red3\" borderRadius=\"$4\" alignSelf=\"center\" paddingHorizontal=\"$4\" gap=\"$2\" alignItems=\"center\">\n <SizableText size=\"$2\" color=\"$red9\" fontWeight=\"600\">Offer ends in</SizableText>\n <SizableText size=\"$5\" color=\"$red9\" fontWeight=\"800\" fontFamily=\"$mono\">{countdown.display}</SizableText>\n </XStack>\n )}\n\n {features.length > 0 && (\n <YStack gap=\"$2.5\" paddingHorizontal=\"$2\">\n {features.map((f, i) => (\n <XStack key={i} gap=\"$2.5\" alignItems=\"center\">\n <SizableText size=\"$4\" color=\"$green9\">✓</SizableText>\n <SizableText size=\"$4\" color=\"$color11\" flex={1}>{f}</SizableText>\n </XStack>\n ))}\n </YStack>\n )}\n\n <XStack gap=\"$3\" paddingTop=\"$1\">\n {plans.map((plan) => (\n <PlanCard key={plan.id} plan={plan} selected={selected === plan.id} onPress={() => onSelectPlan?.(plan.id)} />\n ))}\n </XStack>\n </YStack>\n </ScrollView>\n\n <YStack\n position=\"absolute\"\n bottom={0}\n left={0}\n right={0}\n padding=\"$4\"\n paddingBottom=\"$6\"\n backgroundColor=\"$background\"\n borderTopWidth={1}\n borderTopColor=\"$color4\"\n gap=\"$2.5\"\n >\n <Button\n size=\"$5\"\n backgroundColor=\"$color9\"\n color=\"$color1\"\n onPress={onContinue}\n pressStyle={{ backgroundColor: '$color8', scale: 0.98 }}\n animation=\"quick\"\n borderRadius=\"$10\"\n fontWeight=\"700\"\n >\n {continueLabel}\n </Button>\n {reassurance && <SizableText size=\"$2\" color=\"$color9\" textAlign=\"center\">{reassurance}</SizableText>}\n <XStack justifyContent=\"center\" gap=\"$3\">\n {onRestore && <SizableText size=\"$2\" color=\"$color8\" onPress={onRestore} pressStyle={{ opacity: 0.6 }}>Restore</SizableText>}\n {onTerms && <SizableText size=\"$2\" color=\"$color8\" onPress={onTerms} pressStyle={{ opacity: 0.6 }}>Terms</SizableText>}\n {onPrivacy && <SizableText size=\"$2\" color=\"$color8\" onPress={onPrivacy} pressStyle={{ opacity: 0.6 }}>Privacy</SizableText>}\n </XStack>\n </YStack>\n </YStack>\n )\n}\n","import { useState } from 'react'\nimport { Button, SizableText, XStack, YStack, Circle } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type OnboardingStep = {\n title: string\n description: string\n icon?: ReactNode\n}\n\nexport type OnboardingCarouselProps = {\n steps: OnboardingStep[]\n onComplete?: () => void\n onSkip?: () => void\n completeLabel?: string\n skipLabel?: string\n nextLabel?: string\n}\n\nexport function OnboardingCarousel({\n steps,\n onComplete,\n onSkip,\n completeLabel = 'Get Started',\n skipLabel = 'Skip',\n nextLabel = 'Next',\n}: OnboardingCarouselProps) {\n const [current, setCurrent] = useState(0)\n const isLast = current === steps.length - 1\n const step = steps[current]\n\n return (\n <YStack flex={1} backgroundColor=\"$background\" padding=\"$4\" justifyContent=\"space-between\">\n <XStack justifyContent=\"flex-end\" paddingTop=\"$4\">\n {!isLast && onSkip && (\n <Button chromeless onPress={onSkip}>\n <SizableText size=\"$4\" color=\"$color9\">\n {skipLabel}\n </SizableText>\n </Button>\n )}\n </XStack>\n\n <YStack flex={1} alignItems=\"center\" justifyContent=\"center\" gap=\"$5\" paddingHorizontal=\"$4\">\n {step?.icon && (\n <Circle size={120} backgroundColor=\"$color2\" alignItems=\"center\" justifyContent=\"center\">\n {step.icon}\n </Circle>\n )}\n <YStack gap=\"$3\" alignItems=\"center\">\n <SizableText size=\"$9\" fontWeight=\"700\" textAlign=\"center\">\n {step?.title}\n </SizableText>\n <SizableText size=\"$4\" color=\"$color10\" textAlign=\"center\" maxWidth={300}>\n {step?.description}\n </SizableText>\n </YStack>\n </YStack>\n\n <YStack gap=\"$3\" paddingBottom=\"$2\">\n <XStack justifyContent=\"center\" gap=\"$2\">\n {steps.map((_, i) => (\n <Circle\n key={i}\n size={8}\n backgroundColor={i === current ? '$color9' : '$color4'}\n animation=\"quick\"\n />\n ))}\n </XStack>\n <Button\n size=\"$5\"\n backgroundColor=\"$color9\"\n color=\"$color1\"\n borderRadius=\"$5\"\n hoverStyle={{ backgroundColor: '$color10' }}\n pressStyle={{ backgroundColor: '$color8' }}\n onPress={() => (isLast ? onComplete?.() : setCurrent((c) => c + 1))}\n >\n {isLast ? completeLabel : nextLabel}\n </Button>\n </YStack>\n </YStack>\n )\n}\n","import { SizableText, XStack, YStack, Circle, Image } from 'tamagui'\n\nexport type ChatMessage = {\n id: string\n text: string\n sender: 'user' | 'other'\n timestamp?: string\n avatar?: string\n senderName?: string\n}\n\nexport type ChatBubbleProps = {\n message: ChatMessage\n showAvatar?: boolean\n}\n\nexport function ChatBubble({ message, showAvatar = true }: ChatBubbleProps) {\n const isUser = message.sender === 'user'\n\n return (\n <XStack\n alignSelf={isUser ? 'flex-end' : 'flex-start'}\n maxWidth=\"75%\"\n gap=\"$2\"\n flexDirection={isUser ? 'row-reverse' : 'row'}\n >\n {showAvatar && !isUser && (\n <Circle size={32} backgroundColor=\"$color4\" overflow=\"hidden\">\n {message.avatar ? (\n <Image source={{ uri: message.avatar }} width={32} height={32} objectFit=\"cover\" />\n ) : (\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"$color11\">\n {message.senderName?.[0]?.toUpperCase() ?? '?'}\n </SizableText>\n )}\n </Circle>\n )}\n <YStack\n backgroundColor={isUser ? '$color9' : '$color3'}\n paddingHorizontal=\"$3\"\n paddingVertical=\"$2.5\"\n borderRadius=\"$5\"\n borderBottomRightRadius={isUser ? '$2' : '$5'}\n borderBottomLeftRadius={isUser ? '$5' : '$2'}\n gap=\"$1\"\n >\n <SizableText size=\"$3\" color={isUser ? '$color1' : '$color12'}>\n {message.text}\n </SizableText>\n {message.timestamp && (\n <SizableText size=\"$1\" color={isUser ? '$color3' : '$color9'} alignSelf=\"flex-end\">\n {message.timestamp}\n </SizableText>\n )}\n </YStack>\n </XStack>\n )\n}\n","import { Separator, SizableText, Switch, XStack, YStack } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type SettingsItem = {\n id: string\n icon?: ReactNode\n title: string\n subtitle?: string\n right?: ReactNode\n onPress?: () => void\n type?: 'navigate' | 'toggle'\n value?: boolean\n onValueChange?: (value: boolean) => void\n}\n\nexport type SettingsSection = {\n title?: string\n items: SettingsItem[]\n}\n\nexport type SettingsScreenProps = {\n sections: SettingsSection[]\n header?: ReactNode\n}\n\nfunction SettingsItemRow({ item }: { item: SettingsItem }) {\n return (\n <XStack\n alignItems=\"center\"\n gap=\"$3\"\n paddingVertical=\"$3\"\n paddingHorizontal=\"$4\"\n hoverStyle={item.onPress ? { backgroundColor: '$color2' } : undefined}\n pressStyle={item.onPress ? { backgroundColor: '$color3' } : undefined}\n onPress={item.onPress}\n cursor={item.onPress ? 'pointer' : undefined}\n >\n {item.icon && (\n <YStack width={24} alignItems=\"center\">\n {item.icon}\n </YStack>\n )}\n <YStack flex={1} gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"500\">\n {item.title}\n </SizableText>\n {item.subtitle && (\n <SizableText size=\"$2\" color=\"$color9\">\n {item.subtitle}\n </SizableText>\n )}\n </YStack>\n {item.type === 'toggle' ? (\n <Switch size=\"$3\" checked={item.value} onCheckedChange={item.onValueChange}>\n <Switch.Thumb animation=\"quick\" />\n </Switch>\n ) : item.right ? (\n item.right\n ) : (\n item.onPress && (\n <SizableText size=\"$5\" color=\"$color8\">\n ›\n </SizableText>\n )\n )}\n </XStack>\n )\n}\n\nexport function SettingsScreen({ sections, header }: SettingsScreenProps) {\n return (\n <YStack flex={1} backgroundColor=\"$background\">\n {header}\n <YStack gap=\"$4\" paddingVertical=\"$2\">\n {sections.map((section, si) => (\n <YStack key={si}>\n {section.title && (\n <SizableText\n size=\"$2\"\n fontWeight=\"600\"\n color=\"$color9\"\n paddingHorizontal=\"$4\"\n paddingBottom=\"$2\"\n textTransform=\"uppercase\"\n >\n {section.title}\n </SizableText>\n )}\n <YStack backgroundColor=\"$color1\" borderRadius=\"$4\" marginHorizontal=\"$3\" overflow=\"hidden\">\n {section.items.map((item, ii) => (\n <YStack key={item.id}>\n <SettingsItemRow item={item} />\n {ii < section.items.length - 1 && (\n <Separator borderColor=\"$color3\" marginLeft=\"$12\" />\n )}\n </YStack>\n ))}\n </YStack>\n </YStack>\n ))}\n </YStack>\n </YStack>\n )\n}\n","import { Button, SizableText, YStack } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type EmptyStateProps = {\n icon?: ReactNode\n title: string\n description?: string\n actionLabel?: string\n onAction?: () => void\n}\n\nexport function EmptyState({ icon, title, description, actionLabel, onAction }: EmptyStateProps) {\n return (\n <YStack flex={1} alignItems=\"center\" justifyContent=\"center\" gap=\"$4\" padding=\"$6\">\n {icon}\n <YStack gap=\"$2\" alignItems=\"center\">\n <SizableText size=\"$6\" fontWeight=\"600\" textAlign=\"center\">\n {title}\n </SizableText>\n {description && (\n <SizableText size=\"$4\" color=\"$color9\" textAlign=\"center\" maxWidth={280}>\n {description}\n </SizableText>\n )}\n </YStack>\n {actionLabel && onAction && (\n <Button\n size=\"$4\"\n backgroundColor=\"$color9\"\n color=\"$color1\"\n borderRadius=\"$4\"\n hoverStyle={{ backgroundColor: '$color10' }}\n pressStyle={{ backgroundColor: '$color8' }}\n onPress={onAction}\n >\n {actionLabel}\n </Button>\n )}\n </YStack>\n )\n}\n","import { Circle, Image, SizableText, XStack, YStack } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type ProfileHeaderProps = {\n name: string\n subtitle?: string\n avatar?: string\n stats?: { label: string; value: string }[]\n actions?: ReactNode\n}\n\nexport function ProfileHeader({ name, subtitle, avatar, stats, actions }: ProfileHeaderProps) {\n return (\n <YStack alignItems=\"center\" gap=\"$4\" paddingVertical=\"$6\" paddingHorizontal=\"$4\">\n <Circle size={80} backgroundColor=\"$color4\" overflow=\"hidden\">\n {avatar ? (\n <Image source={{ uri: avatar }} width={80} height={80} objectFit=\"cover\" />\n ) : (\n <SizableText size=\"$9\" fontWeight=\"700\" color=\"$color11\">\n {name[0]?.toUpperCase() ?? '?'}\n </SizableText>\n )}\n </Circle>\n <YStack alignItems=\"center\" gap=\"$1\">\n <SizableText size=\"$7\" fontWeight=\"700\">\n {name}\n </SizableText>\n {subtitle && (\n <SizableText size=\"$4\" color=\"$color10\">\n {subtitle}\n </SizableText>\n )}\n </YStack>\n {stats && stats.length > 0 && (\n <XStack gap=\"$6\">\n {stats.map((stat, i) => (\n <YStack key={i} alignItems=\"center\" gap=\"$1\">\n <SizableText size=\"$6\" fontWeight=\"700\">\n {stat.value}\n </SizableText>\n <SizableText size=\"$2\" color=\"$color9\">\n {stat.label}\n </SizableText>\n </YStack>\n ))}\n </XStack>\n )}\n {actions}\n </YStack>\n )\n}\n","import { SizableText, XStack, YStack } from 'tamagui'\nimport { Avatar as BlinkAvatar } from '../primitives/Avatar'\n\nexport type AppHeaderVariant = 'simple' | 'back' | 'profile' | 'centered'\nexport type AppHeaderProps = {\n title: string; subtitle?: string; variant?: AppHeaderVariant\n onBack?: () => void; avatar?: string; left?: React.ReactNode; right?: React.ReactNode\n transparent?: boolean; borderless?: boolean\n}\n\nexport function AppHeader({ title, subtitle, variant = 'simple', onBack, avatar, left, right, transparent, borderless }: AppHeaderProps) {\n const leftContent = (() => {\n if (variant === 'back') return (\n <SizableText size=\"$6\" paddingRight=\"$2\" onPress={onBack} pressStyle={{ opacity: 0.6 }} cursor=\"pointer\">{'\\u2039'}</SizableText>\n )\n if (variant === 'profile') return <BlinkAvatar uri={avatar} name={title} size=\"sm\" />\n if (variant === 'centered') return left ?? null\n return null\n })()\n const rightContent = (variant === 'profile' || variant === 'centered') ? (right ?? null) : null\n\n return (\n <YStack paddingTop=\"$6\" backgroundColor={transparent ? 'transparent' : '$background'}\n borderBottomWidth={borderless ? 0 : 1} borderBottomColor=\"$borderColor\">\n <XStack height={56} alignItems=\"center\" paddingHorizontal=\"$4\" gap=\"$3\">\n {leftContent}\n <YStack flex={1} alignItems={variant === 'centered' ? 'center' : 'flex-start'}>\n <SizableText size=\"$6\" fontWeight=\"700\" numberOfLines={1}>{title}</SizableText>\n {subtitle && <SizableText size=\"$2\" color=\"$color9\" numberOfLines={1}>{subtitle}</SizableText>}\n </YStack>\n {rightContent}\n </XStack>\n </YStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { Sheet, SizableText, XStack, YStack } from 'tamagui'\nimport { ScrollView } from 'react-native'\n\nexport type BottomSheetProps = {\n open: boolean; onOpenChange: (open: boolean) => void; title?: string; children: ReactNode\n snapPoints?: number[]; dismissOnSnapToBottom?: boolean; showHandle?: boolean; showClose?: boolean\n zIndex?: number\n}\n\nexport function BottomSheet({ open, onOpenChange, title, children, snapPoints = [85], dismissOnSnapToBottom = true, showHandle = true, showClose = false, zIndex = 100_000 }: BottomSheetProps) {\n return (\n <Sheet\n modal\n forceRemoveScrollEnabled={open}\n open={open}\n onOpenChange={onOpenChange}\n snapPoints={snapPoints}\n dismissOnSnapToBottom={dismissOnSnapToBottom}\n zIndex={zIndex}\n animation=\"medium\"\n >\n <Sheet.Overlay animation=\"lazy\" enterStyle={{ opacity: 0 }} exitStyle={{ opacity: 0 }} />\n {showHandle && <Sheet.Handle />}\n <Sheet.Frame>\n {(title || showClose) && (\n <XStack paddingHorizontal=\"$4\" paddingTop=\"$3\" paddingBottom=\"$2\" alignItems=\"center\" justifyContent=\"space-between\">\n <SizableText size=\"$6\" fontWeight=\"600\" flexShrink={1}>{title}</SizableText>\n {showClose && (\n <XStack width={28} height={28} borderRadius=\"$10\" backgroundColor=\"$color4\" alignItems=\"center\" justifyContent=\"center\"\n pressStyle={{ opacity: 0.7 }} onPress={() => onOpenChange(false)}>\n <SizableText size=\"$3\" color=\"$color10\" fontWeight=\"600\">{'\\u2715'}</SizableText>\n </XStack>\n )}\n </XStack>\n )}\n <ScrollView contentContainerStyle={{ paddingBottom: 40 }}>\n <YStack padding=\"$4\">{children}</YStack>\n </ScrollView>\n </Sheet.Frame>\n </Sheet>\n )\n}\n","import { useState, type ReactNode } from 'react'\nimport { Button, SizableText, Spinner, XStack, YStack } from 'tamagui'\nimport { Input } from '../primitives/Input'\nimport { Divider } from '../layouts/Divider'\n\nexport type AuthProvider = { id: string; name: string; icon?: ReactNode }\nexport type LoginScreenProps = {\n title?: string; subtitle?: string; logo?: ReactNode; providers?: AuthProvider[]\n onProviderPress?: (id: string) => void; showEmailForm?: boolean\n onEmailSubmit?: (email: string, password: string) => void\n onForgotPassword?: () => void; onCreateAccount?: () => void\n onTerms?: () => void; onPrivacy?: () => void; loading?: boolean\n}\n\nexport function LoginScreen({ title = 'Welcome', subtitle = 'Sign in to continue', logo, providers = [], onProviderPress, showEmailForm, onEmailSubmit, onForgotPassword, onCreateAccount, onTerms, onPrivacy, loading }: LoginScreenProps) {\n const [email, setEmail] = useState('')\n const [password, setPassword] = useState('')\n return (\n <YStack flex={1} padding=\"$4\" gap=\"$5\" backgroundColor=\"$background\" justifyContent=\"center\">\n <YStack alignItems=\"center\" gap=\"$2\">\n {logo && <YStack paddingBottom=\"$3\">{logo}</YStack>}\n <SizableText size=\"$9\" fontWeight=\"700\" textAlign=\"center\">{title}</SizableText>\n <SizableText size=\"$4\" color=\"$color10\" textAlign=\"center\">{subtitle}</SizableText>\n </YStack>\n {providers.length > 0 && (\n <YStack gap=\"$2.5\">\n {providers.map(p => (\n <Button key={p.id} size=\"$5\" borderWidth={1.5} borderColor=\"$color5\" backgroundColor=\"$color1\" borderRadius=\"$4\"\n disabled={loading} onPress={() => onProviderPress?.(p.id)}\n hoverStyle={{ backgroundColor: '$color2' }} pressStyle={{ backgroundColor: '$color3' }}>\n <XStack alignItems=\"center\" gap=\"$2\">\n {p.icon}\n <SizableText size=\"$4\" fontWeight=\"500\">{p.name}</SizableText>\n </XStack>\n </Button>\n ))}\n </YStack>\n )}\n {showEmailForm && providers.length > 0 && <Divider label=\"or\" />}\n {showEmailForm && (\n <YStack gap=\"$3\">\n <Input label=\"Email\" placeholder=\"your@email.com\" value={email} onChangeText={setEmail} keyboardType=\"email-address\" autoCapitalize=\"none\" />\n <Input label=\"Password\" placeholder=\"••••••••\" value={password} onChangeText={setPassword} secureTextEntry />\n {onForgotPassword && <XStack justifyContent=\"flex-end\"><SizableText size=\"$3\" color=\"$color9\" onPress={onForgotPassword}>Forgot password?</SizableText></XStack>}\n <Button size=\"$5\" backgroundColor=\"$color9\" color=\"$color1\" borderRadius=\"$5\" disabled={loading}\n onPress={() => onEmailSubmit?.(email, password)}\n hoverStyle={{ backgroundColor: '$color10' }} pressStyle={{ backgroundColor: '$color8' }}\n icon={loading ? <Spinner size=\"small\" color=\"$color1\" /> : undefined}>\n Sign In\n </Button>\n {onCreateAccount && <Button size=\"$3\" chromeless onPress={onCreateAccount}><SizableText size=\"$3\" color=\"$color9\">Create Account</SizableText></Button>}\n </YStack>\n )}\n {(onTerms || onPrivacy) && (\n <YStack paddingTop=\"$2\" alignItems=\"center\">\n <SizableText size=\"$2\" color=\"$color8\" textAlign=\"center\">\n By continuing you agree to our{' '}\n {onTerms && <SizableText size=\"$2\" color=\"$color9\" onPress={onTerms}>Terms of Service</SizableText>}\n {onTerms && onPrivacy && ' & '}\n {onPrivacy && <SizableText size=\"$2\" color=\"$color9\" onPress={onPrivacy}>Privacy Policy</SizableText>}\n </SizableText>\n </YStack>\n )}\n </YStack>\n )\n}\n","import { SizableText, XStack, YStack } from 'tamagui'\n\nexport type TabBarItem = { id: string; label: string; icon?: React.ReactNode }\nexport type TabBarProps = { tabs: TabBarItem[]; activeTab: string; onTabPress: (id: string) => void; showLabels?: boolean }\n\nexport function TabBar({ tabs, activeTab, onTabPress, showLabels = true }: TabBarProps) {\n return (\n <XStack height={56} borderTopWidth={1} borderTopColor=\"$borderColor\" backgroundColor=\"$background\" paddingBottom=\"$2\">\n {tabs.map(tab => {\n const active = tab.id === activeTab\n return (\n <YStack key={tab.id} flex={1} alignItems=\"center\" justifyContent=\"center\" gap=\"$1\"\n pressStyle={{ opacity: 0.6 }} onPress={() => onTabPress(tab.id)}>\n {tab.icon && <SizableText size=\"$5\" color={active ? '$color9' : '$color8'}>{tab.icon}</SizableText>}\n {showLabels && <SizableText size=\"$1\" color={active ? '$color9' : '$color8'} fontWeight={active ? '600' : '400'}>{tab.label}</SizableText>}\n </YStack>\n )\n })}\n </XStack>\n )\n}\n","import { Input, SizableText, XStack } from 'tamagui'\n\nexport type SearchBarProps = {\n value: string; onChangeText: (text: string) => void; placeholder?: string\n onFilter?: () => void; onCancel?: () => void; autoFocus?: boolean\n}\n\nexport function SearchBar({ value, onChangeText, placeholder = 'Search\\u2026', onFilter, onCancel, autoFocus }: SearchBarProps) {\n return (\n <XStack height={44} borderRadius=\"$10\" backgroundColor=\"$color2\" alignItems=\"center\" paddingHorizontal=\"$3\" gap=\"$2\">\n <SizableText size=\"$4\" color=\"$color8\">{'\\u2315'}</SizableText>\n <Input flex={1} size=\"$4\" value={value} onChangeText={onChangeText} placeholder={placeholder}\n placeholderTextColor=\"$color8\" backgroundColor=\"transparent\" borderWidth={0} autoFocus={autoFocus} />\n {onFilter && <SizableText size=\"$4\" color=\"$color9\" pressStyle={{ opacity: 0.6 }} onPress={onFilter}>{'\\u2ACF'}</SizableText>}\n {onCancel && <SizableText size=\"$3\" color=\"$color9\" pressStyle={{ opacity: 0.6 }} onPress={onCancel}>Cancel</SizableText>}\n </XStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { SizableText, XStack } from 'tamagui'\n\nexport type FABProps = {\n icon?: ReactNode; label?: string; onPress: () => void\n position?: 'bottom-right' | 'bottom-center' | 'bottom-left'; size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizes = { sm: 44, md: 56, lg: 68 }\nconst positionStyles = {\n 'bottom-right': { right: 20 },\n 'bottom-center': { left: '50%', marginLeft: -28 },\n 'bottom-left': { left: 20 },\n}\n\nexport function FloatingActionButton({ icon, label, onPress, position = 'bottom-right', size = 'md' }: FABProps) {\n const dim = sizes[size]\n return (\n <XStack position=\"absolute\" bottom={32} {...positionStyles[position] as any}\n height={dim} minWidth={dim} borderRadius={label ? '$6' : '$10'}\n backgroundColor=\"$color9\" alignItems=\"center\" justifyContent=\"center\" gap=\"$2\"\n paddingHorizontal={label ? '$4' : 0} elevation={4}\n pressStyle={{ scale: 0.95, opacity: 0.9 }} onPress={onPress}>\n {icon && <SizableText color=\"$color1\">{icon}</SizableText>}\n {label && <SizableText color=\"$color1\" size=\"$4\" fontWeight=\"600\">{label}</SizableText>}\n </XStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { Sheet, SizableText, XStack, YStack } from 'tamagui'\n\nexport type ActionSheetItem = { id: string; label: string; icon?: ReactNode; destructive?: boolean }\nexport type ActionSheetProps = {\n open: boolean; onOpenChange: (open: boolean) => void; title?: string\n items: ActionSheetItem[]; onSelect: (id: string) => void; cancelLabel?: string\n zIndex?: number\n}\n\nexport function ActionSheet({ open, onOpenChange, title, items, onSelect, cancelLabel = 'Cancel', zIndex = 100_000 }: ActionSheetProps) {\n return (\n <Sheet\n modal\n forceRemoveScrollEnabled={open}\n open={open}\n onOpenChange={onOpenChange}\n snapPoints={[50]}\n dismissOnSnapToBottom\n zIndex={zIndex}\n animation=\"medium\"\n >\n <Sheet.Overlay animation=\"lazy\" enterStyle={{ opacity: 0 }} exitStyle={{ opacity: 0 }} />\n <Sheet.Handle />\n <Sheet.Frame>\n {title && <SizableText size=\"$3\" color=\"$color8\" textAlign=\"center\" paddingTop=\"$3\" paddingBottom=\"$1\">{title}</SizableText>}\n <YStack paddingHorizontal=\"$3\" paddingTop=\"$2\">\n {items.map(item => (\n <XStack key={item.id} height={52} alignItems=\"center\" gap=\"$3\" paddingHorizontal=\"$3\" borderRadius=\"$4\"\n pressStyle={{ backgroundColor: '$color3' }} onPress={() => { onSelect(item.id); onOpenChange(false) }}>\n {item.icon && <SizableText size=\"$5\">{item.icon}</SizableText>}\n <SizableText size=\"$5\" flex={1} color={item.destructive ? '$red9' : '$color12'}\n fontWeight={item.destructive ? '600' : '400'}>{item.label}</SizableText>\n </XStack>\n ))}\n </YStack>\n <YStack paddingHorizontal=\"$3\" paddingVertical=\"$3\" borderTopWidth={1} borderTopColor=\"$borderColor\" marginTop=\"$2\">\n <XStack height={48} alignItems=\"center\" justifyContent=\"center\" borderRadius=\"$4\"\n pressStyle={{ backgroundColor: '$color3' }} onPress={() => onOpenChange(false)}>\n <SizableText size=\"$5\" fontWeight=\"600\" color=\"$color9\">{cancelLabel}</SizableText>\n </XStack>\n </YStack>\n </Sheet.Frame>\n </Sheet>\n )\n}\n","import { YStack } from 'tamagui'\n\nexport type SkeletonProps = { width?: number | string; height?: number; borderRadius?: number; variant?: 'text' | 'circular' | 'rectangular' }\n\nexport function Skeleton({ width, height, borderRadius, variant = 'rectangular' }: SkeletonProps) {\n const size = variant === 'circular' ? (height ?? 40) : height\n const w = variant === 'text' ? (width ?? '100%') : width\n const h = variant === 'text' ? (height ?? 16) : size\n const r = variant === 'circular' ? 9999 : (borderRadius ?? 8)\n return <YStack width={w as any} height={h} borderRadius={r} backgroundColor=\"$color3\" opacity={0.6} animation=\"slow\" enterStyle={{ opacity: 0.3 }} exitStyle={{ opacity: 0.3 }} />\n}\n","import { type ReactNode } from 'react'\nimport { SizableText, XStack, YStack } from 'tamagui'\n\nexport type NotificationBannerProps = {\n title: string; message?: string; variant?: 'info' | 'success' | 'warning' | 'error'\n onPress?: () => void; onDismiss?: () => void; icon?: ReactNode\n}\n\nconst variantColors = {\n info: { bg: '$blue3', text: '$blue11' }, success: { bg: '$green3', text: '$green11' },\n warning: { bg: '$yellow3', text: '$yellow11' }, error: { bg: '$red3', text: '$red11' },\n}\n\nexport function NotificationBanner({ title, message, variant = 'info', onPress, onDismiss, icon }: NotificationBannerProps) {\n const colors = variantColors[variant]\n return (\n <XStack backgroundColor={colors.bg} padding=\"$3\" borderRadius=\"$4\" gap=\"$3\" alignItems=\"flex-start\"\n onPress={onPress} pressStyle={onPress ? { opacity: 0.8 } : undefined}>\n {icon && <YStack paddingTop=\"$0.5\">{icon}</YStack>}\n <YStack flex={1} gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"600\" color={colors.text}>{title}</SizableText>\n {message && <SizableText size=\"$3\" color={colors.text} opacity={0.8}>{message}</SizableText>}\n </YStack>\n {onDismiss && <SizableText size=\"$3\" color={colors.text} opacity={0.6} onPress={onDismiss} padding=\"$1\">{'\\u2715'}</SizableText>}\n </XStack>\n )\n}\n","import { Circle, SizableText, XStack, YStack } from 'tamagui'\n\nexport type ProgressStepsProps = { steps: string[]; currentStep: number; variant?: 'dots' | 'bar' | 'numbered' }\n\nexport function ProgressSteps({ steps, currentStep, variant = 'dots' }: ProgressStepsProps) {\n if (variant === 'bar') {\n const progress = steps.length > 1 ? (currentStep / (steps.length - 1)) * 100 : 100\n return (\n <YStack gap=\"$2\">\n <YStack height={4} backgroundColor=\"$color4\" borderRadius={2} overflow=\"hidden\">\n <YStack height={4} width={`${progress}%`} backgroundColor=\"$color9\" borderRadius={2} animation=\"quick\" />\n </YStack>\n <XStack justifyContent=\"space-between\">\n {steps.map((label, i) => <SizableText key={i} size=\"$2\" color={i <= currentStep ? '$color9' : '$color8'}>{label}</SizableText>)}\n </XStack>\n </YStack>\n )\n }\n return (\n <XStack alignItems=\"center\" justifyContent=\"center\" gap=\"$0\">\n {steps.map((label, i) => (\n <XStack key={i} alignItems=\"center\" gap=\"$0\">\n <YStack alignItems=\"center\" gap=\"$1.5\">\n <Circle size={variant === 'numbered' ? 28 : 10} backgroundColor={i <= currentStep ? '$color9' : '$color4'} animation=\"quick\">\n {variant === 'numbered' && <SizableText size=\"$2\" fontWeight=\"600\" color={i <= currentStep ? '$color1' : '$color8'}>{i + 1}</SizableText>}\n </Circle>\n <SizableText size=\"$1\" color={i <= currentStep ? '$color11' : '$color8'} numberOfLines={1}>{label}</SizableText>\n </YStack>\n {i < steps.length - 1 && <YStack height={2} width={32} backgroundColor={i < currentStep ? '$color9' : '$color4'} marginBottom=\"$4\" />}\n </XStack>\n ))}\n </XStack>\n )\n}\n","import { useState, type ReactNode } from 'react'\nimport { Button, SizableText, XStack, YStack } from 'tamagui'\n\nexport type SwipeAction = { id: string; label: string; color: string; onPress: () => void }\nexport type SwipeableRowProps = { children: ReactNode; leftActions?: SwipeAction[]; rightActions?: SwipeAction[] }\n\nexport function SwipeableRow({ children, leftActions, rightActions }: SwipeableRowProps) {\n const [showActions, setShowActions] = useState(false)\n const actions = [...(leftActions ?? []), ...(rightActions ?? [])]\n if (actions.length === 0) return <>{children}</>\n return (\n <YStack>\n <YStack onLongPress={() => setShowActions(v => !v)} pressStyle={{ opacity: 0.9 }}>{children}</YStack>\n {showActions && (\n <XStack gap=\"$2\" padding=\"$2\" animation=\"quick\" enterStyle={{ opacity: 0, scale: 0.95 }}>\n {actions.map(action => (\n <Button key={action.id} flex={1} size=\"$3\" backgroundColor={action.color} borderRadius=\"$3\"\n onPress={() => { action.onPress(); setShowActions(false) }}>\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"white\">{action.label}</SizableText>\n </Button>\n ))}\n </XStack>\n )}\n </YStack>\n )\n}\n","import { Image, SizableText, XStack, YStack } from 'tamagui'\nimport { LinearGradient } from 'tamagui/linear-gradient'\n\nexport type MediaCardProps = {\n image: string; title: string; subtitle?: string\n overlay?: 'gradient' | 'dark' | 'none'; aspectRatio?: number\n onPress?: () => void; badge?: string\n}\n\nexport function MediaCard({ image, title, subtitle, overlay = 'gradient', aspectRatio = 16 / 9, onPress, badge }: MediaCardProps) {\n return (\n <YStack borderRadius=\"$4\" overflow=\"hidden\" onPress={onPress}\n pressStyle={onPress ? { scale: 0.98, opacity: 0.9 } : undefined} animation=\"quick\">\n <YStack aspectRatio={aspectRatio}>\n <Image source={{ uri: image }} width=\"100%\" height=\"100%\" objectFit=\"cover\" />\n {overlay === 'gradient' && (\n <LinearGradient colors={['transparent', 'rgba(0,0,0,0.7)']} start={[0, 0]} end={[0, 1]}\n position=\"absolute\" bottom={0} left={0} right={0} height=\"60%\" />\n )}\n {overlay === 'dark' && <YStack position=\"absolute\" fullscreen backgroundColor=\"rgba(0,0,0,0.4)\" />}\n {badge && (\n <XStack position=\"absolute\" top=\"$2\" right=\"$2\" backgroundColor=\"$color9\"\n paddingHorizontal=\"$2\" paddingVertical=\"$1\" borderRadius=\"$2\">\n <SizableText size=\"$1\" fontWeight=\"600\" color=\"$color1\">{badge}</SizableText>\n </XStack>\n )}\n <YStack position=\"absolute\" bottom={0} left={0} right={0} padding=\"$3\" gap=\"$1\">\n <SizableText size=\"$5\" fontWeight=\"600\" color=\"white\">{title}</SizableText>\n {subtitle && <SizableText size=\"$3\" color=\"rgba(255,255,255,0.8)\">{subtitle}</SizableText>}\n </YStack>\n </YStack>\n </YStack>\n )\n}\n","import { Children, useState, type ReactNode } from 'react'\nimport { Circle, XStack, YStack } from 'tamagui'\nimport { ScrollView } from 'react-native'\nimport type { NativeScrollEvent, NativeSyntheticEvent } from 'react-native'\n\nexport type CarouselProps = { children: ReactNode; gap?: string; snapToInterval?: number; showIndicators?: boolean }\n\nexport function Carousel({ children, gap = '$3', snapToInterval, showIndicators = false }: CarouselProps) {\n const [activeIndex, setActiveIndex] = useState(0)\n const count = Children.count(children)\n const gapPx = gap === '$2' ? 8 : gap === '$3' ? 12 : 16\n return (\n <YStack gap=\"$3\">\n <ScrollView horizontal showsHorizontalScrollIndicator={false} snapToInterval={snapToInterval} decelerationRate=\"fast\"\n contentContainerStyle={{ gap: gapPx, paddingHorizontal: 16 }}\n onMomentumScrollEnd={(e: NativeSyntheticEvent<NativeScrollEvent>) => {\n if (snapToInterval) setActiveIndex(Math.round(e.nativeEvent.contentOffset.x / snapToInterval))\n }}>\n {children}\n </ScrollView>\n {showIndicators && count > 1 && (\n <XStack justifyContent=\"center\" gap=\"$1.5\">\n {Array.from({ length: count }, (_, i) => (\n <Circle key={i} size={6} backgroundColor={i === activeIndex ? '$color9' : '$color4'} animation=\"quick\" />\n ))}\n </XStack>\n )}\n </YStack>\n )\n}\n","import { type ReactNode } from 'react'\nimport { YStack } from 'tamagui'\nimport { RefreshControl, ScrollView } from 'react-native'\n\nexport type PullToRefreshProps = { children: ReactNode; onRefresh: () => void; refreshing?: boolean }\n\nexport function PullToRefresh({ children, onRefresh, refreshing = false }: PullToRefreshProps) {\n return (\n <ScrollView contentContainerStyle={{ flexGrow: 1 }}\n refreshControl={<RefreshControl refreshing={refreshing} onRefresh={onRefresh} />}>\n <YStack flex={1}>{children}</YStack>\n </ScrollView>\n )\n}\n","import { Button, Image, SizableText, XStack, YStack } from 'tamagui'\n\nexport type ProductCardProps = {\n image: string\n title: string\n price: string\n originalPrice?: string\n rating?: number\n reviewCount?: number\n badge?: string\n onPress?: () => void\n onAddToCart?: () => void\n variant?: 'vertical' | 'horizontal'\n}\n\nfunction Stars({ rating = 0 }: { rating?: number }) {\n return (\n <XStack gap=\"$0.5\">\n {Array.from({ length: 5 }, (_, i) => (\n <SizableText key={i} size=\"$2\" color={i < Math.round(rating) ? '$yellow9' : '$color5'}>★</SizableText>\n ))}\n </XStack>\n )\n}\n\nfunction CardContent({ title, price, originalPrice, rating, reviewCount, onAddToCart }: Omit<ProductCardProps, 'image' | 'badge' | 'onPress' | 'variant'>) {\n return (\n <YStack flex={1} gap=\"$1.5\" justifyContent=\"space-between\">\n <YStack gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"600\" numberOfLines={2}>{title}</SizableText>\n {rating !== undefined && (\n <XStack gap=\"$1.5\" alignItems=\"center\">\n <Stars rating={rating} />\n {reviewCount !== undefined && <SizableText size=\"$2\" color=\"$color9\">({reviewCount})</SizableText>}\n </XStack>\n )}\n </YStack>\n <XStack alignItems=\"center\" justifyContent=\"space-between\">\n <XStack gap=\"$2\" alignItems=\"baseline\">\n <SizableText size=\"$6\" fontWeight=\"700\">{price}</SizableText>\n {originalPrice && (\n <SizableText size=\"$3\" color=\"$color8\" textDecorationLine=\"line-through\">{originalPrice}</SizableText>\n )}\n </XStack>\n {onAddToCart && (\n <Button size=\"$3\" backgroundColor=\"$color9\" color=\"$color1\" borderRadius=\"$10\"\n onPress={(e: any) => { e.stopPropagation?.(); onAddToCart() }}\n pressStyle={{ backgroundColor: '$color8', scale: 0.95 }} animation=\"quick\">\n + Cart\n </Button>\n )}\n </XStack>\n </YStack>\n )\n}\n\nexport function ProductCard({ image, title, price, originalPrice, rating, reviewCount, badge, onPress, onAddToCart, variant = 'vertical' }: ProductCardProps) {\n const isHorizontal = variant === 'horizontal'\n const Wrapper = isHorizontal ? XStack : YStack\n\n return (\n <Wrapper backgroundColor=\"$color1\" borderRadius=\"$5\" overflow=\"hidden\" borderWidth={1}\n borderColor=\"$color4\" onPress={onPress} animation=\"quick\"\n pressStyle={onPress ? { scale: 0.98, opacity: 0.9 } : undefined}\n {...(isHorizontal ? { height: 140 } : {})}>\n <YStack {...(isHorizontal ? { width: 140 } : { aspectRatio: 4 / 3 })} position=\"relative\">\n <Image source={{ uri: image }} width=\"100%\" height=\"100%\" objectFit=\"cover\" />\n {badge && (\n <XStack position=\"absolute\" top=\"$2\" left=\"$2\" backgroundColor=\"$red9\"\n paddingHorizontal=\"$2\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$1\" fontWeight=\"700\" color=\"white\">{badge}</SizableText>\n </XStack>\n )}\n </YStack>\n <YStack flex={1} padding=\"$3\">\n <CardContent {...{ title, price, originalPrice, rating, reviewCount, onAddToCart }} />\n </YStack>\n </Wrapper>\n )\n}\n","import { Button, ScrollView, SizableText, XStack, YStack } from 'tamagui'\n\nexport type PricingPlan = {\n id: string\n name: string\n price: string\n period?: string\n description?: string\n features: { label: string; included: boolean }[]\n popular?: boolean\n cta?: string\n}\n\nexport type PricingTableProps = {\n plans: PricingPlan[]\n selectedPlan?: string\n onSelectPlan?: (planId: string) => void\n annual?: boolean\n onToggleBilling?: (annual: boolean) => void\n}\n\nfunction BillingToggle({ annual, onToggle }: { annual: boolean; onToggle: (v: boolean) => void }) {\n return (\n <XStack alignSelf=\"center\" backgroundColor=\"$color3\" borderRadius=\"$10\" padding=\"$1\" gap=\"$0.5\">\n {(['Monthly', 'Annual'] as const).map((label, i) => {\n const active = i === 1 ? annual : !annual\n return (\n <XStack key={label} paddingHorizontal=\"$4\" paddingVertical=\"$2\" borderRadius=\"$10\"\n backgroundColor={active ? '$color9' : 'transparent'} onPress={() => onToggle(i === 1)}\n pressStyle={{ opacity: 0.8 }} animation=\"quick\">\n <SizableText size=\"$3\" fontWeight=\"600\" color={active ? '$color1' : '$color10'}>{label}</SizableText>\n </XStack>\n )\n })}\n </XStack>\n )\n}\n\nfunction PlanCard({ plan, selected, onSelect }: { plan: PricingPlan; selected: boolean; onSelect: () => void }) {\n return (\n <YStack flex={1} minWidth={260} padding=\"$4\" borderRadius=\"$5\" gap=\"$3\"\n borderWidth={2} borderColor={selected ? '$color9' : plan.popular ? '$color9' : '$color4'}\n backgroundColor={plan.popular ? '$color2' : '$color1'} position=\"relative\"\n pressStyle={{ scale: 0.98 }} animation=\"quick\" onPress={onSelect}>\n {plan.popular && (\n <XStack position=\"absolute\" top={-12} alignSelf=\"center\"\n backgroundColor=\"$color9\" paddingHorizontal=\"$3\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$1\" fontWeight=\"700\" color=\"$color1\">POPULAR</SizableText>\n </XStack>\n )}\n <YStack gap=\"$1\" alignItems=\"center\" paddingTop={plan.popular ? '$2' : 0}>\n <SizableText size=\"$4\" fontWeight=\"600\" color=\"$color11\">{plan.name}</SizableText>\n {plan.description && <SizableText size=\"$2\" color=\"$color9\" textAlign=\"center\">{plan.description}</SizableText>}\n <XStack alignItems=\"baseline\" gap=\"$1\">\n <SizableText size=\"$9\" fontWeight=\"800\">{plan.price}</SizableText>\n {plan.period && <SizableText size=\"$3\" color=\"$color9\">/{plan.period}</SizableText>}\n </XStack>\n </YStack>\n <YStack gap=\"$2\" flex={1}>\n {plan.features.map((f, i) => (\n <XStack key={i} gap=\"$2\" alignItems=\"center\">\n <SizableText size=\"$3\" color={f.included ? '$green9' : '$color6'}>{f.included ? '✓' : '✗'}</SizableText>\n <SizableText size=\"$3\" color={f.included ? '$color11' : '$color8'} flex={1}>{f.label}</SizableText>\n </XStack>\n ))}\n </YStack>\n <Button size=\"$4\" borderRadius=\"$10\" fontWeight=\"700\" animation=\"quick\"\n backgroundColor={selected || plan.popular ? '$color9' : 'transparent'}\n color={selected || plan.popular ? '$color1' : '$color11'}\n borderWidth={selected || plan.popular ? 0 : 1} borderColor=\"$color7\"\n onPress={onSelect} pressStyle={{ scale: 0.97, opacity: 0.9 }}>\n {plan.cta ?? 'Get Started'}\n </Button>\n </YStack>\n )\n}\n\nexport function PricingTable({ plans, selectedPlan, onSelectPlan, annual = false, onToggleBilling }: PricingTableProps) {\n const selected = selectedPlan ?? plans.find((p) => p.popular)?.id\n return (\n <YStack gap=\"$4\">\n {onToggleBilling && <BillingToggle annual={annual} onToggle={onToggleBilling} />}\n <ScrollView horizontal showsHorizontalScrollIndicator={false}\n contentContainerStyle={{ gap: 12, paddingHorizontal: 4 }}>\n {plans.map((plan) => (\n <PlanCard key={plan.id} plan={plan} selected={selected === plan.id}\n onSelect={() => onSelectPlan?.(plan.id)} />\n ))}\n </ScrollView>\n </YStack>\n )\n}\n","import { useState, useEffect, useRef, useCallback } from 'react'\nimport { SizableText, XStack, YStack } from 'tamagui'\n\nexport type CountdownBannerProps = {\n endTime?: Date\n minutes?: number\n label?: string\n onExpire?: () => void\n variant?: 'banner' | 'compact' | 'badge'\n}\n\nfunction useCountdown(endTime?: Date, minutes?: number, onExpire?: () => void) {\n const getRemaining = useCallback(() => {\n if (endTime) return Math.max(0, Math.floor((endTime.getTime() - Date.now()) / 1000))\n return 0\n }, [endTime])\n\n const [seconds, setSeconds] = useState(() => endTime ? getRemaining() : (minutes ?? 0) * 60)\n const firedRef = useRef(false)\n\n useEffect(() => {\n if (endTime) setSeconds(getRemaining())\n else setSeconds((minutes ?? 0) * 60)\n firedRef.current = false\n }, [endTime, minutes, getRemaining])\n\n useEffect(() => {\n if (seconds <= 0) return\n const id = setInterval(() => {\n setSeconds((s) => {\n const next = endTime ? Math.max(0, Math.floor((endTime.getTime() - Date.now()) / 1000)) : s - 1\n if (next <= 0 && !firedRef.current) { firedRef.current = true; onExpire?.() }\n return Math.max(0, next)\n })\n }, 1000)\n return () => clearInterval(id)\n }, [seconds > 0, endTime, onExpire])\n\n const hh = String(Math.floor(seconds / 3600)).padStart(2, '0')\n const mm = String(Math.floor((seconds % 3600) / 60)).padStart(2, '0')\n const ss = String(seconds % 60).padStart(2, '0')\n const display = seconds >= 3600 ? `${hh}:${mm}:${ss}` : `${mm}:${ss}`\n return { display, expired: seconds <= 0 }\n}\n\nfunction TimeBox({ value }: { value: string }) {\n return (\n <XStack backgroundColor=\"rgba(0,0,0,0.15)\" paddingHorizontal=\"$2\" paddingVertical=\"$1\" borderRadius=\"$3\">\n <SizableText size=\"$6\" fontWeight=\"800\" color=\"white\" fontFamily=\"$mono\">{value}</SizableText>\n </XStack>\n )\n}\n\nexport function CountdownBanner({ endTime, minutes, label = 'Offer ends in', onExpire, variant = 'banner' }: CountdownBannerProps) {\n const { display, expired } = useCountdown(endTime, minutes, onExpire)\n if (expired) return null\n\n const parts = display.split(':')\n\n if (variant === 'badge') {\n return (\n <XStack backgroundColor=\"$red9\" paddingHorizontal=\"$2.5\" paddingVertical=\"$1\" borderRadius=\"$10\" gap=\"$1.5\" alignItems=\"center\">\n <SizableText size=\"$1\" fontWeight=\"600\" color=\"white\">{label}</SizableText>\n <SizableText size=\"$2\" fontWeight=\"800\" color=\"white\" fontFamily=\"$mono\">{display}</SizableText>\n </XStack>\n )\n }\n\n if (variant === 'compact') {\n return (\n <XStack backgroundColor=\"$red3\" paddingHorizontal=\"$3\" paddingVertical=\"$2\" borderRadius=\"$4\" gap=\"$2\" alignItems=\"center\" alignSelf=\"center\">\n <SizableText size=\"$3\" fontWeight=\"600\" color=\"$red9\">{label}</SizableText>\n <SizableText size=\"$5\" fontWeight=\"800\" color=\"$red9\" fontFamily=\"$mono\">{display}</SizableText>\n </XStack>\n )\n }\n\n return (\n <YStack backgroundColor=\"$red9\" paddingVertical=\"$3\" paddingHorizontal=\"$4\" gap=\"$1.5\" alignItems=\"center\">\n <SizableText size=\"$3\" fontWeight=\"600\" color=\"white\" opacity={0.9}>{label}</SizableText>\n <XStack gap=\"$1.5\" alignItems=\"center\">\n {parts.map((p, i) => (\n <XStack key={i} gap=\"$1.5\" alignItems=\"center\">\n {i > 0 && <SizableText size=\"$6\" fontWeight=\"800\" color=\"white\">:</SizableText>}\n <TimeBox value={p} />\n </XStack>\n ))}\n </XStack>\n </YStack>\n )\n}\n","import { Image, SizableText, XStack, YStack } from 'tamagui'\n\nexport type TestimonialCardProps = {\n quote: string\n author: string\n role?: string\n avatar?: string\n rating?: number\n variant?: 'card' | 'minimal' | 'featured'\n}\n\nfunction Stars({ count = 0 }: { count?: number }) {\n if (!count) return null\n return (\n <XStack gap=\"$0.5\">\n {Array.from({ length: 5 }, (_, i) => (\n <SizableText key={i} size=\"$3\" color={i < Math.round(count) ? '$yellow9' : '$color5'}>★</SizableText>\n ))}\n </XStack>\n )\n}\n\nfunction AuthorRow({ author, role, avatar }: Pick<TestimonialCardProps, 'author' | 'role' | 'avatar'>) {\n return (\n <XStack gap=\"$2.5\" alignItems=\"center\">\n {avatar && (\n <Image source={{ uri: avatar }} width={36} height={36} borderRadius={18} objectFit=\"cover\" />\n )}\n <YStack>\n <SizableText size=\"$3\" fontWeight=\"600\">{author}</SizableText>\n {role && <SizableText size=\"$2\" color=\"$color9\">{role}</SizableText>}\n </YStack>\n </XStack>\n )\n}\n\nexport function TestimonialCard({ quote, author, role, avatar, rating, variant = 'card' }: TestimonialCardProps) {\n if (variant === 'minimal') {\n return (\n <YStack gap=\"$3\" paddingVertical=\"$2\">\n <Stars count={rating} />\n <SizableText size=\"$4\" color=\"$color11\" fontStyle=\"italic\" lineHeight={24}>\"{quote}\"</SizableText>\n <AuthorRow author={author} role={role} avatar={avatar} />\n </YStack>\n )\n }\n\n if (variant === 'featured') {\n return (\n <YStack backgroundColor=\"$color3\" padding=\"$5\" borderRadius=\"$6\" gap=\"$4\" alignItems=\"center\">\n <SizableText size=\"$8\" color=\"$color9\" opacity={0.3} fontWeight=\"800\">\"</SizableText>\n <Stars count={rating} />\n <SizableText size=\"$5\" color=\"$color12\" fontStyle=\"italic\" textAlign=\"center\" lineHeight={28}>\n \"{quote}\"\n </SizableText>\n <AuthorRow author={author} role={role} avatar={avatar} />\n </YStack>\n )\n }\n\n return (\n <YStack backgroundColor=\"$color1\" padding=\"$4\" borderRadius=\"$5\" borderWidth={1}\n borderColor=\"$color4\" gap=\"$3\">\n <Stars count={rating} />\n <SizableText size=\"$4\" color=\"$color11\" fontStyle=\"italic\" lineHeight={24}>\"{quote}\"</SizableText>\n <AuthorRow author={author} role={role} avatar={avatar} />\n </YStack>\n )\n}\n","import type { ReactNode } from 'react'\nimport { AlertDialog, Button, SizableText, XStack, YStack } from 'tamagui'\n\nexport type ConfirmDialogProps = {\n open: boolean\n onOpenChange: (open: boolean) => void\n title: string\n description?: string\n confirmLabel?: string\n cancelLabel?: string\n onConfirm?: () => void\n onCancel?: () => void\n destructive?: boolean\n icon?: ReactNode\n}\n\nexport function ConfirmDialog({\n open, onOpenChange, title, description,\n confirmLabel = 'Confirm', cancelLabel = 'Cancel',\n onConfirm, onCancel, destructive = false, icon,\n}: ConfirmDialogProps) {\n const handleCancel = () => { onCancel?.(); onOpenChange(false) }\n const handleConfirm = () => { onConfirm?.(); onOpenChange(false) }\n\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialog.Portal>\n <AlertDialog.Overlay key=\"overlay\" opacity={0.5}\n enterStyle={{ opacity: 0 }} exitStyle={{ opacity: 0 }} animation=\"quick\" />\n <AlertDialog.Content key=\"content\" bordered elevate width=\"90%\" maxWidth={400}\n enterStyle={{ y: -20, opacity: 0, scale: 0.9 }}\n exitStyle={{ y: 10, opacity: 0, scale: 0.95 }}\n x={0} y={0} scale={1} opacity={1} animation=\"quick\">\n <YStack gap=\"$4\" padding=\"$4\">\n {icon && <YStack alignItems=\"center\">{icon}</YStack>}\n <YStack gap=\"$2\" alignItems={icon ? 'center' : 'flex-start'}>\n <AlertDialog.Title size=\"$6\" fontWeight=\"700\">{title}</AlertDialog.Title>\n {description && (\n <AlertDialog.Description size=\"$3\" color=\"$color10\"\n textAlign={icon ? 'center' : 'left'}>\n {description}\n </AlertDialog.Description>\n )}\n </YStack>\n <XStack gap=\"$3\" justifyContent=\"flex-end\">\n <Button flex={1} size=\"$4\" borderRadius=\"$4\" variant=\"outlined\"\n borderColor=\"$color7\" onPress={handleCancel}\n pressStyle={{ opacity: 0.7 }} animation=\"quick\">\n <SizableText fontWeight=\"600\">{cancelLabel}</SizableText>\n </Button>\n <Button flex={1} size=\"$4\" borderRadius=\"$4\"\n backgroundColor={destructive ? '$red9' : '$color9'}\n onPress={handleConfirm}\n pressStyle={{ backgroundColor: destructive ? '$red8' : '$color8', scale: 0.97 }}\n animation=\"quick\">\n <SizableText fontWeight=\"600\" color=\"white\">{confirmLabel}</SizableText>\n </Button>\n </XStack>\n </YStack>\n </AlertDialog.Content>\n </AlertDialog.Portal>\n </AlertDialog>\n )\n}\n","import { type ReactNode, useCallback } from 'react'\nimport { SizableText, XStack } from 'tamagui'\n\nexport type ChipProps = {\n label: string\n selected?: boolean\n onPress?: () => void\n onRemove?: () => void\n variant?: 'filled' | 'outlined'\n size?: 'sm' | 'md' | 'lg'\n icon?: ReactNode\n color?: string\n}\n\nexport type ChipGroupProps = {\n chips: { id: string; label: string; icon?: ReactNode }[]\n selected?: string[]\n onSelectionChange?: (selected: string[]) => void\n multiSelect?: boolean\n variant?: 'filled' | 'outlined'\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst sizes = { sm: { h: 28, px: '$2', text: '$2' }, md: { h: 34, px: '$3', text: '$3' }, lg: { h: 42, px: '$4', text: '$4' } } as const\n\nexport function Chip({ label, selected, onPress, onRemove, variant = 'filled', size = 'md', icon, color }: ChipProps) {\n const s = sizes[size]\n const filled = variant === 'filled'\n const active = selected ?? false\n const bg = active ? (color ?? '$color9') : filled ? '$color3' : 'transparent'\n const border = active ? (color ?? '$color9') : '$color6'\n const fg = active ? '$color1' : '$color11'\n\n return (\n <XStack\n height={s.h} borderRadius=\"$10\" paddingHorizontal={s.px}\n backgroundColor={bg} borderWidth={filled ? 0 : 1} borderColor={border}\n alignItems=\"center\" gap=\"$1.5\" pressStyle={{ scale: 0.96, opacity: 0.85 }}\n animation=\"quick\" onPress={onPress} cursor=\"pointer\"\n >\n {active && <SizableText size={s.text} color={fg}>✓</SizableText>}\n {icon && <SizableText color={fg}>{icon}</SizableText>}\n <SizableText size={s.text} color={fg} fontWeight=\"500\">{label}</SizableText>\n {onRemove && (\n <SizableText size=\"$2\" color={fg} opacity={0.7} pressStyle={{ opacity: 1 }}\n onPress={(e: any) => { e.stopPropagation?.(); onRemove() }} marginLeft=\"$1\">✕</SizableText>\n )}\n </XStack>\n )\n}\n\nexport function ChipGroup({ chips, selected = [], onSelectionChange, multiSelect = true, variant, size }: ChipGroupProps) {\n const toggle = useCallback((id: string) => {\n if (!onSelectionChange) return\n const isSelected = selected.includes(id)\n if (multiSelect) {\n onSelectionChange(isSelected ? selected.filter(s => s !== id) : [...selected, id])\n } else {\n onSelectionChange(isSelected ? [] : [id])\n }\n }, [selected, onSelectionChange, multiSelect])\n\n return (\n <XStack flexWrap=\"wrap\" gap=\"$2\">\n {chips.map(chip => (\n <Chip key={chip.id} label={chip.label} icon={chip.icon} selected={selected.includes(chip.id)}\n onPress={() => toggle(chip.id)} variant={variant} size={size} />\n ))}\n </XStack>\n )\n}\n","import { useCallback, useRef, useState } from 'react'\nimport { Platform, type TextInput } from 'react-native'\nimport { Input, SizableText, XStack, YStack } from 'tamagui'\n\nexport type OTPInputProps = {\n length?: number\n value?: string\n onChange?: (value: string) => void\n onComplete?: (code: string) => void\n error?: boolean\n autoFocus?: boolean\n secureEntry?: boolean\n}\n\nexport function OTPInput({ length = 6, value = '', onChange, onComplete, error, autoFocus, secureEntry }: OTPInputProps) {\n const inputRef = useRef<TextInput>(null)\n const [focused, setFocused] = useState(false)\n const digits = value.padEnd(length, ' ').slice(0, length)\n\n const handleChange = useCallback((text: string) => {\n const cleaned = text.replace(/\\D/g, '').slice(0, length)\n onChange?.(cleaned)\n if (cleaned.length === length) onComplete?.(cleaned)\n }, [length, onChange, onComplete])\n\n const focusInput = useCallback(() => {\n inputRef.current?.focus()\n }, [])\n\n return (\n <YStack position=\"relative\">\n <XStack gap=\"$2\" justifyContent=\"center\">\n {Array.from({ length }, (_, i) => {\n const char = digits[i]?.trim()\n const isCursor = focused && value.length === i\n return (\n <YStack\n key={i} width={48} height={56} borderRadius=\"$3\"\n borderWidth={2}\n borderColor={error ? '$red9' : isCursor ? '$color9' : char ? '$color7' : '$color5'}\n backgroundColor={error ? '$red2' : isCursor ? '$color2' : '$color1'}\n alignItems=\"center\" justifyContent=\"center\"\n animation=\"quick\"\n pointerEvents=\"none\"\n >\n <SizableText size=\"$7\" fontWeight=\"600\" color=\"$color12\">\n {char ? (secureEntry ? '●' : char) : ''}\n </SizableText>\n {isCursor && (\n <YStack\n position=\"absolute\" bottom={10}\n width={20} height={2}\n backgroundColor=\"$color9\"\n animation=\"quick\"\n />\n )}\n </YStack>\n )\n })}\n </XStack>\n\n {Platform.OS === 'web' ? (\n <input\n ref={inputRef as any}\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n autoComplete=\"one-time-code\"\n maxLength={length}\n value={value}\n autoFocus={autoFocus}\n onChange={(e: any) => handleChange(e.target.value)}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={{\n position: 'absolute',\n top: 0, left: 0, right: 0, bottom: 0,\n width: '100%', height: '100%',\n opacity: 0,\n fontSize: 16,\n caretColor: 'transparent',\n cursor: 'pointer',\n }}\n />\n ) : (\n <Input\n ref={inputRef as any}\n value={value}\n onChangeText={handleChange}\n keyboardType=\"number-pad\"\n maxLength={length}\n autoFocus={autoFocus}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n position=\"absolute\"\n top={0} left={0} right={0} bottom={0}\n opacity={0}\n fontSize={16}\n />\n )}\n </YStack>\n )\n}\n","import { useState, useCallback } from 'react'\nimport { Input, SizableText, XStack, YStack } from 'tamagui'\n\nexport type PasswordInputProps = {\n value?: string\n onChangeText?: (value: string) => void\n placeholder?: string\n label?: string\n error?: string\n size?: '$3' | '$4' | '$5'\n strengthIndicator?: boolean\n}\n\nfunction getStrength(pw: string): { label: string; color: string; width: string } {\n if (!pw) return { label: '', color: '$color6', width: '0%' }\n const score = [pw.length >= 8, /[A-Z]/.test(pw), /[0-9]/.test(pw), /[^A-Za-z0-9]/.test(pw)].filter(Boolean).length\n if (score <= 1) return { label: 'Weak', color: '$red9', width: '33%' }\n if (score <= 2) return { label: 'Medium', color: '$yellow9', width: '66%' }\n return { label: 'Strong', color: '$green9', width: '100%' }\n}\n\nexport function PasswordInput({ value = '', onChangeText, placeholder = 'Password', label, error, size = '$4', strengthIndicator }: PasswordInputProps) {\n const [visible, setVisible] = useState(false)\n const toggle = useCallback(() => setVisible(v => !v), [])\n const strength = getStrength(value)\n\n return (\n <YStack gap=\"$1.5\">\n {label && <SizableText size=\"$3\" color=\"$color11\" fontWeight=\"500\">{label}</SizableText>}\n <XStack\n borderWidth={1} borderColor={error ? '$red9' : '$color6'} borderRadius=\"$3\"\n backgroundColor=\"$color2\" alignItems=\"center\" paddingRight=\"$2\"\n focusStyle={{ borderColor: '$color9' }}\n >\n <Input\n flex={1} size={size} value={value} onChangeText={onChangeText}\n placeholder={placeholder} placeholderTextColor=\"$color8\"\n secureTextEntry={!visible} backgroundColor=\"transparent\" borderWidth={0}\n />\n <SizableText\n size=\"$4\" color=\"$color8\" paddingHorizontal=\"$2\"\n pressStyle={{ opacity: 0.6 }} onPress={toggle} cursor=\"pointer\"\n >\n {visible ? '◉' : '◎'}\n </SizableText>\n </XStack>\n {strengthIndicator && value.length > 0 && (\n <YStack gap=\"$1\">\n <YStack height={3} backgroundColor=\"$color4\" borderRadius={2} overflow=\"hidden\">\n <YStack height={3} width={strength.width as any} backgroundColor={strength.color} borderRadius={2} animation=\"quick\" />\n </YStack>\n <SizableText size=\"$1\" color={strength.color}>{strength.label}</SizableText>\n </YStack>\n )}\n {error && <SizableText size=\"$2\" color=\"$red9\">{error}</SizableText>}\n </YStack>\n )\n}\n","import { Circle, Image, SizableText, XStack } from 'tamagui'\n\nexport type AvatarGroupProps = {\n avatars: { uri?: string; name?: string; color?: string }[]\n max?: number\n size?: number\n overlap?: number\n}\n\nfunction getInitials(name?: string): string {\n if (!name) return '?'\n return name.split(' ').map(p => p[0]).join('').toUpperCase().slice(0, 2)\n}\n\nfunction AvatarItem({ uri, name, color, size }: { uri?: string; name?: string; color?: string; size: number }) {\n return (\n <Circle\n size={size} backgroundColor={color ?? '$color4'} borderWidth={2} borderColor=\"$background\"\n overflow=\"hidden\" alignItems=\"center\" justifyContent=\"center\"\n >\n {uri ? (\n <Image source={{ uri }} width={size} height={size} objectFit=\"cover\" />\n ) : (\n <SizableText size=\"$2\" fontWeight=\"600\" color={color ? '$color1' : '$color11'}>\n {getInitials(name)}\n </SizableText>\n )}\n </Circle>\n )\n}\n\nexport function AvatarGroup({ avatars, max = 4, size = 36, overlap = 10 }: AvatarGroupProps) {\n const visible = avatars.slice(0, max)\n const remaining = avatars.length - max\n\n return (\n <XStack alignItems=\"center\">\n {visible.map((avatar, i) => (\n <XStack key={i} marginLeft={i === 0 ? 0 : -overlap} zIndex={visible.length - i}>\n <AvatarItem {...avatar} size={size} />\n </XStack>\n ))}\n {remaining > 0 && (\n <XStack marginLeft={-overlap} zIndex={0}>\n <Circle size={size} backgroundColor=\"$color6\" borderWidth={2} borderColor=\"$background\"\n alignItems=\"center\" justifyContent=\"center\">\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"$color11\">+{remaining}</SizableText>\n </Circle>\n </XStack>\n )}\n </XStack>\n )\n}\n","import { useState, useCallback, type ReactNode } from 'react'\nimport { Circle, SizableText, XStack, YStack } from 'tamagui'\n\nexport type SwipeCardItem = { id: string; [key: string]: any }\nexport type SwipeCardsProps<T extends SwipeCardItem> = {\n items: T[]\n renderCard: (item: T) => ReactNode\n onSwipeLeft?: (item: T) => void\n onSwipeRight?: (item: T) => void\n onEmpty?: () => void\n leftLabel?: string\n rightLabel?: string\n emptyMessage?: string\n}\n\nconst STACK_SIZE = 3\nconst CARD_OFFSETS = [\n { scale: 1, y: 0, opacity: 1 },\n { scale: 0.95, y: 8, opacity: 0.9 },\n { scale: 0.9, y: 16, opacity: 0.8 },\n]\n\nexport function SwipeCards<T extends SwipeCardItem>({\n items, renderCard, onSwipeLeft, onSwipeRight, onEmpty,\n leftLabel = 'Nope', rightLabel = 'Like', emptyMessage = 'No more cards',\n}: SwipeCardsProps<T>) {\n const [index, setIndex] = useState(0)\n const [exitDir, setExitDir] = useState<'left' | 'right' | null>(null)\n\n const remaining = items.slice(index)\n const isEmpty = remaining.length === 0\n\n const handleSwipe = useCallback((dir: 'left' | 'right') => {\n if (isEmpty) return\n const current = items[index]\n setExitDir(dir)\n const timer = setTimeout(() => {\n setExitDir(null)\n setIndex((i) => {\n const next = i + 1\n if (next >= items.length) onEmpty?.()\n return next\n })\n dir === 'left' ? onSwipeLeft?.(current) : onSwipeRight?.(current)\n }, 250)\n return () => clearTimeout(timer)\n }, [isEmpty, index, items, onEmpty, onSwipeLeft, onSwipeRight])\n\n if (isEmpty) {\n return (\n <YStack flex={1} alignItems=\"center\" justifyContent=\"center\" gap=\"$3\" padding=\"$4\">\n <SizableText size=\"$5\" color=\"$color8\">{emptyMessage}</SizableText>\n </YStack>\n )\n }\n\n return (\n <YStack flex={1} gap=\"$4\">\n <YStack flex={1} alignItems=\"center\" justifyContent=\"center\">\n <YStack width=\"100%\" maxWidth={340} aspectRatio={3 / 4} position=\"relative\">\n {remaining.slice(0, STACK_SIZE).reverse().map((item, reverseIdx) => {\n const stackIdx = Math.min(remaining.length, STACK_SIZE) - 1 - reverseIdx\n const isTop = stackIdx === 0\n const offset = CARD_OFFSETS[stackIdx] ?? CARD_OFFSETS[2]\n const exitX = exitDir === 'left' ? -400 : exitDir === 'right' ? 400 : 0\n const exitRotate = exitDir === 'left' ? '-15deg' : exitDir === 'right' ? '15deg' : '0deg'\n\n return (\n <YStack key={item.id} position=\"absolute\" top={0} left={0} right={0} bottom={0}\n animation=\"quick\" borderRadius=\"$5\" overflow=\"hidden\" backgroundColor=\"$background\"\n elevate={isTop} shadowColor=\"$shadowColor\" shadowRadius={isTop ? 16 : 4}\n scale={isTop && exitDir ? 1 : offset.scale}\n opacity={isTop && exitDir ? 0 : offset.opacity}\n y={isTop && exitDir ? 0 : offset.y}\n x={isTop ? exitX : 0}\n rotate={isTop ? exitRotate : '0deg'}>\n {renderCard(item)}\n {isTop && exitDir === 'left' && (\n <YStack position=\"absolute\" top=\"$4\" right=\"$4\" borderWidth={3}\n borderColor=\"$red10\" borderRadius=\"$3\" padding=\"$2\" rotate=\"15deg\">\n <SizableText size=\"$7\" fontWeight=\"800\" color=\"$red10\">{leftLabel.toUpperCase()}</SizableText>\n </YStack>\n )}\n {isTop && exitDir === 'right' && (\n <YStack position=\"absolute\" top=\"$4\" left=\"$4\" borderWidth={3}\n borderColor=\"$green10\" borderRadius=\"$3\" padding=\"$2\" rotate=\"-15deg\">\n <SizableText size=\"$7\" fontWeight=\"800\" color=\"$green10\">{rightLabel.toUpperCase()}</SizableText>\n </YStack>\n )}\n </YStack>\n )\n })}\n </YStack>\n </YStack>\n <XStack justifyContent=\"center\" gap=\"$6\" paddingBottom=\"$4\">\n <Circle size={60} backgroundColor=\"$red3\" borderWidth={2} borderColor=\"$red7\"\n pressStyle={{ scale: 0.9, backgroundColor: '$red5' }} animation=\"quick\"\n onPress={() => handleSwipe('left')} alignItems=\"center\" justifyContent=\"center\">\n <SizableText size=\"$6\" color=\"$red10\" fontWeight=\"700\">✕</SizableText>\n </Circle>\n <Circle size={60} backgroundColor=\"$green3\" borderWidth={2} borderColor=\"$green7\"\n pressStyle={{ scale: 0.9, backgroundColor: '$green5' }} animation=\"quick\"\n onPress={() => handleSwipe('right')} alignItems=\"center\" justifyContent=\"center\">\n <SizableText size=\"$6\" color=\"$green10\" fontWeight=\"700\">♥</SizableText>\n </Circle>\n </XStack>\n </YStack>\n )\n}\n","import type { ReactNode } from 'react'\nimport { styled, YStack } from 'tamagui'\n\nexport type GlassCardProps = {\n children: ReactNode\n intensity?: 'light' | 'medium' | 'heavy'\n tint?: 'light' | 'dark'\n borderRadius?: number | string\n padding?: number | string\n elevated?: boolean\n}\n\nconst BLUR: Record<string, number> = { light: 8, medium: 16, heavy: 24 }\nconst TINT_BG: Record<string, string> = {\n light: 'rgba(255,255,255,0.15)',\n dark: 'rgba(0,0,0,0.25)',\n}\n\nconst GlassFrame = styled(YStack, {\n borderWidth: 1,\n borderColor: 'rgba(255,255,255,0.2)',\n overflow: 'hidden',\n})\n\nexport function GlassCard({\n children,\n intensity = 'medium',\n tint = 'light',\n borderRadius = '$4',\n padding = '$4',\n elevated = false,\n}: GlassCardProps) {\n const blur = BLUR[intensity]\n\n return (\n <GlassFrame\n borderRadius={borderRadius as any}\n padding={padding as any}\n backgroundColor={TINT_BG[tint]}\n elevate={elevated}\n shadowColor={elevated ? '$shadowColor' : undefined}\n shadowRadius={elevated ? 20 : undefined}\n shadowOpacity={elevated ? 0.3 : undefined}\n // @ts-ignore — backdropFilter supported on web + iOS\n style={{ backdropFilter: `blur(${blur}px)`, WebkitBackdropFilter: `blur(${blur}px)` }}\n >\n {children}\n </GlassFrame>\n )\n}\n","import { type ReactNode, useMemo, useState } from 'react'\nimport { SizableText, Separator, XStack, YStack, useMedia, styled, View } from 'tamagui'\n\nexport type DataTableColumn<T> = {\n key: string\n header: string\n render?: (value: any, row: T) => ReactNode\n sortable?: boolean\n width?: number | string\n}\n\nexport type DataTableProps<T extends Record<string, any>> = {\n columns: DataTableColumn<T>[]\n data: T[]\n onRowPress?: (row: T) => void\n emptyMessage?: string\n}\n\ntype SortState = { key: string; dir: 'asc' | 'desc' } | null\n\nconst TH = styled(View, { padding: '$3', justifyContent: 'center' })\nconst TD = styled(View, { padding: '$3', justifyContent: 'center' })\n\nexport function StatusBadge({ status }: { status: string }) {\n const isActive = status.toLowerCase() === 'active'\n return (\n <XStack gap=\"$2\" alignItems=\"center\">\n <View width={8} height={8} borderRadius={4}\n backgroundColor={isActive ? '$green9' : '$orange9'} />\n <SizableText size=\"$3\" color=\"$color11\">{status}</SizableText>\n </XStack>\n )\n}\n\nfunction HeaderCell({ col, sort, onSort }: { col: DataTableColumn<any>; sort: SortState; onSort: () => void }) {\n const active = sort?.key === col.key\n const indicator = active ? (sort!.dir === 'asc' ? ' ▲' : ' ▼') : ''\n return (\n <TH key={col.key} width={col.width} flexDirection=\"row\" alignItems=\"center\"\n cursor={col.sortable ? 'pointer' : undefined} onPress={col.sortable ? onSort : undefined}\n pressStyle={col.sortable ? { opacity: 0.7 } : undefined}>\n <SizableText size=\"$2\" fontWeight=\"700\" color={active ? '$color12' : '$color9'}\n textTransform=\"uppercase\" letterSpacing={0.5}>\n {col.header}{indicator}\n </SizableText>\n </TH>\n )\n}\n\nfunction TableRow<T extends Record<string, any>>({ row, columns, onPress, odd }: {\n row: T; columns: DataTableColumn<T>[]; onPress?: (r: T) => void; odd: boolean\n}) {\n return (\n <XStack backgroundColor={odd ? '$color2' : 'transparent'} borderBottomWidth={0.5}\n borderColor=\"$color4\" hoverStyle={{ backgroundColor: '$color3' }}\n cursor={onPress ? 'pointer' : undefined} onPress={onPress ? () => onPress(row) : undefined}\n pressStyle={onPress ? { opacity: 0.85 } : undefined} animation=\"quick\">\n {columns.map((col) => (\n <TD key={col.key} width={col.width} flex={col.width ? undefined : 1}>\n {col.render ? col.render(row[col.key], row) : (\n <SizableText size=\"$3\" color=\"$color11\">{String(row[col.key] ?? '')}</SizableText>\n )}\n </TD>\n ))}\n </XStack>\n )\n}\n\nfunction CardRow<T extends Record<string, any>>({ row, columns, onPress }: {\n row: T; columns: DataTableColumn<T>[]; onPress?: (r: T) => void\n}) {\n return (\n <YStack backgroundColor=\"$color1\" borderRadius=\"$4\" borderWidth={1} borderColor=\"$color4\"\n padding=\"$3\" gap=\"$2\" onPress={onPress ? () => onPress(row) : undefined}\n pressStyle={onPress ? { scale: 0.98, opacity: 0.9 } : undefined} animation=\"quick\">\n {columns.map((col, i) => (\n <YStack key={col.key}>\n {i > 0 && <Separator marginVertical=\"$1.5\" borderColor=\"$color4\" />}\n <XStack justifyContent=\"space-between\" alignItems=\"center\">\n <SizableText size=\"$2\" color=\"$color9\" fontWeight=\"600\">{col.header}</SizableText>\n {col.render ? col.render(row[col.key], row) : (\n <SizableText size=\"$3\" color=\"$color11\">{String(row[col.key] ?? '')}</SizableText>\n )}\n </XStack>\n </YStack>\n ))}\n </YStack>\n )\n}\n\nexport function DataTable<T extends Record<string, any>>({ columns, data, onRowPress, emptyMessage = 'No data' }: DataTableProps<T>) {\n const [sort, setSort] = useState<SortState>(null)\n const media = useMedia()\n const isSmall = media.sm\n\n const sorted = useMemo(() => {\n if (!sort) return data\n return [...data].sort((a, b) => {\n const av = a[sort.key], bv = b[sort.key]\n const cmp = typeof av === 'number' && typeof bv === 'number' ? av - bv\n : String(av ?? '').localeCompare(String(bv ?? ''))\n return sort.dir === 'asc' ? cmp : -cmp\n })\n }, [data, sort])\n\n const toggleSort = (key: string) =>\n setSort((s) => s?.key === key ? { key, dir: s.dir === 'asc' ? 'desc' : 'asc' } : { key, dir: 'asc' })\n\n if (!data.length) {\n return (\n <YStack padding=\"$6\" alignItems=\"center\">\n <SizableText size=\"$4\" color=\"$color9\">{emptyMessage}</SizableText>\n </YStack>\n )\n }\n\n if (isSmall) {\n return (\n <YStack gap=\"$3\">\n {sorted.map((row, i) => (\n <CardRow key={i} row={row} columns={columns} onPress={onRowPress} />\n ))}\n </YStack>\n )\n }\n\n return (\n <YStack borderWidth={1} borderColor=\"$color4\" borderRadius=\"$4\" overflow=\"hidden\">\n <XStack backgroundColor=\"$color1\" borderBottomWidth={1} borderColor=\"$color4\">\n {columns.map((col) => (\n <HeaderCell key={col.key} col={col} sort={sort} onSort={() => toggleSort(col.key)} />\n ))}\n </XStack>\n {sorted.map((row, i) => (\n <TableRow key={i} row={row} columns={columns} onPress={onRowPress} odd={i % 2 === 1} />\n ))}\n </YStack>\n )\n}\n","import { useCallback, useMemo, useState } from 'react'\nimport { SizableText, XStack, YStack } from 'tamagui'\n\nexport type DatePickerProps = {\n value?: Date\n onDateChange?: (date: Date) => void\n minDate?: Date\n maxDate?: Date\n startDay?: 0 | 1\n placeholder?: string\n}\n\nconst MONTH_NAMES = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\nconst DAY_LABELS_SUN = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\nconst DAY_LABELS_MON = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']\n\nfunction daysInMonth(year: number, month: number) {\n return new Date(year, month + 1, 0).getDate()\n}\n\nfunction sameDay(a: Date | undefined, b: Date) {\n return a ? a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate() : false\n}\n\nfunction buildGrid(year: number, month: number, startDay: 0 | 1) {\n const total = daysInMonth(year, month)\n const firstWeekday = new Date(year, month, 1).getDay()\n const offset = (firstWeekday - startDay + 7) % 7\n const prevTotal = daysInMonth(year, month - 1)\n const cells: { day: number; month: number; year: number; outside: boolean }[] = []\n\n for (let i = offset - 1; i >= 0; i--)\n cells.push({ day: prevTotal - i, month: month - 1, year: month === 0 ? year - 1 : year, outside: true })\n for (let d = 1; d <= total; d++)\n cells.push({ day: d, month, year, outside: false })\n while (cells.length < 42)\n cells.push({ day: cells.length - offset - total + 1, month: month + 1, year: month === 11 ? year + 1 : year, outside: true })\n return cells\n}\n\nfunction NavButton({ label, onPress }: { label: string; onPress: () => void }) {\n return (\n <XStack\n width={36} height={36} borderRadius=\"$10\" alignItems=\"center\" justifyContent=\"center\"\n backgroundColor=\"$color3\" pressStyle={{ scale: 0.92, backgroundColor: '$color5' }}\n animation=\"quick\" onPress={onPress} cursor=\"pointer\"\n >\n <SizableText size=\"$5\" color=\"$color11\" fontWeight=\"600\">{label}</SizableText>\n </XStack>\n )\n}\n\nexport function DatePicker({ value, onDateChange, minDate, maxDate, startDay = 1 }: DatePickerProps) {\n const today = useMemo(() => new Date(), [])\n const [viewMonth, setViewMonth] = useState(value?.getMonth() ?? today.getMonth())\n const [viewYear, setViewYear] = useState(value?.getFullYear() ?? today.getFullYear())\n const headers = startDay === 1 ? DAY_LABELS_MON : DAY_LABELS_SUN\n const grid = useMemo(() => buildGrid(viewYear, viewMonth, startDay), [viewYear, viewMonth, startDay])\n\n const navigate = useCallback((dir: -1 | 1) => {\n setViewMonth(m => {\n const next = m + dir\n if (next < 0) { setViewYear(y => y - 1); return 11 }\n if (next > 11) { setViewYear(y => y + 1); return 0 }\n return next\n })\n }, [])\n\n const isDisabled = useCallback((d: Date) => {\n if (minDate && d < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) return true\n if (maxDate && d > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())) return true\n return false\n }, [minDate, maxDate])\n\n return (\n <YStack backgroundColor=\"$color2\" borderRadius=\"$4\" padding=\"$3\" gap=\"$2\" animation=\"quick\">\n <XStack alignItems=\"center\" justifyContent=\"space-between\">\n <NavButton label=\"‹\" onPress={() => navigate(-1)} />\n <SizableText size=\"$4\" fontWeight=\"700\" color=\"$color12\">\n {MONTH_NAMES[viewMonth]} {viewYear}\n </SizableText>\n <NavButton label=\"›\" onPress={() => navigate(1)} />\n </XStack>\n\n <XStack>\n {headers.map(h => (\n <SizableText key={h} size=\"$2\" color=\"$color8\" fontWeight=\"600\" textAlign=\"center\" flex={1}>{h}</SizableText>\n ))}\n </XStack>\n\n {Array.from({ length: Math.ceil(grid.length / 7) }, (_, row) => (\n <XStack key={row}>\n {grid.slice(row * 7, row * 7 + 7).map((cell, i) => {\n const date = new Date(cell.year, cell.month, cell.day)\n const selected = sameDay(value, date)\n const isToday = sameDay(today, date)\n const disabled = cell.outside || isDisabled(date)\n return (\n <YStack key={`${row}-${i}`} flex={1} alignItems=\"center\" paddingVertical=\"$0.5\">\n <XStack\n width={40} height={40} borderRadius=\"$10\" alignItems=\"center\" justifyContent=\"center\"\n backgroundColor={selected ? '$color9' : 'transparent'}\n borderWidth={isToday && !selected ? 1.5 : 0}\n borderColor=\"$color9\"\n pressStyle={disabled ? undefined : { scale: 0.9, backgroundColor: selected ? '$color10' : '$color4' }}\n animation=\"quick\"\n opacity={disabled ? 0.35 : 1}\n cursor={disabled ? 'default' : 'pointer'}\n onPress={disabled ? undefined : () => onDateChange?.(date)}\n >\n <SizableText\n size=\"$3\"\n fontWeight={selected || isToday ? '700' : '400'}\n color={selected ? 'white' : cell.outside ? '$color5' : '$color12'}\n >\n {cell.day}\n </SizableText>\n </XStack>\n </YStack>\n )\n })}\n </XStack>\n ))}\n </YStack>\n )\n}\n","import type { ReactNode } from 'react'\nimport { SizableText, Theme, XStack, YStack } from 'tamagui'\n\nexport type EventCardProps = {\n title: string\n subtitle?: string\n time?: string\n location?: string\n label?: string\n participants?: number\n maxParticipants?: number\n theme?: 'purple' | 'green' | 'blue' | 'orange' | 'red' | 'pink'\n onPress?: () => void\n actions?: ReactNode\n}\n\nconst THEME_MAP = {\n purple: 'purple',\n green: 'green',\n blue: 'blue',\n orange: 'orange',\n red: 'red',\n pink: 'pink',\n} as const\n\nfunction ParticipantDots({ count, max }: { count: number; max?: number }) {\n const dots = Math.min(count, 5)\n return (\n <XStack alignItems=\"center\" gap=\"$1.5\">\n <XStack>\n {Array.from({ length: dots }, (_, i) => (\n <YStack key={i} width={22} height={22} borderRadius={11} backgroundColor=\"$color7\"\n borderWidth={2} borderColor=\"$color4\" marginLeft={i > 0 ? -8 : 0}\n alignItems=\"center\" justifyContent=\"center\">\n <SizableText size=\"$1\" color=\"$color1\" fontWeight=\"700\">\n {String.fromCharCode(65 + i)}\n </SizableText>\n </YStack>\n ))}\n </XStack>\n <SizableText size=\"$2\" color=\"$color11\" fontWeight=\"500\">\n {count}{max ? `/${max}` : ''}\n </SizableText>\n </XStack>\n )\n}\n\nfunction CardInner({ title, subtitle, time, location, label, participants, maxParticipants, onPress, actions }: Omit<EventCardProps, 'theme'>) {\n return (\n <YStack\n backgroundColor=\"$color4\" borderRadius=\"$5\" padding=\"$4\" gap=\"$3\"\n borderWidth={1} borderColor=\"$color7\"\n onPress={onPress} animation=\"quick\"\n pressStyle={onPress ? { scale: 0.97, opacity: 0.9 } : undefined}\n cursor={onPress ? 'pointer' : undefined}\n >\n <XStack justifyContent=\"space-between\" alignItems=\"flex-start\">\n <YStack flex={1} gap=\"$1\">\n <SizableText size=\"$6\" fontWeight=\"700\" color=\"$color12\">{title}</SizableText>\n {subtitle && <SizableText size=\"$3\" color=\"$color11\" opacity={0.8}>{subtitle}</SizableText>}\n </YStack>\n {time && (\n <YStack backgroundColor=\"$color6\" paddingHorizontal=\"$2.5\" paddingVertical=\"$1.5\" borderRadius=\"$3\">\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"$color12\">{time}</SizableText>\n </YStack>\n )}\n </XStack>\n\n <XStack gap=\"$4\" alignItems=\"center\" flexWrap=\"wrap\">\n {location && (\n <XStack gap=\"$1.5\" alignItems=\"center\">\n <SizableText size=\"$3\">📍</SizableText>\n <SizableText size=\"$3\" color=\"$color11\">{location}</SizableText>\n </XStack>\n )}\n {participants !== undefined && (\n <ParticipantDots count={participants} max={maxParticipants} />\n )}\n </XStack>\n\n {(label || actions) && (\n <XStack justifyContent=\"space-between\" alignItems=\"center\">\n {label ? (\n <XStack backgroundColor=\"$color6\" paddingHorizontal=\"$2.5\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"$color11\">{label}</SizableText>\n </XStack>\n ) : <YStack />}\n {actions}\n </XStack>\n )}\n </YStack>\n )\n}\n\nexport function EventCard({ theme = 'purple', ...props }: EventCardProps) {\n return (\n <Theme name={THEME_MAP[theme]}>\n <CardInner {...props} />\n </Theme>\n )\n}\n","import { Separator, SizableText, Slider, Switch, XStack, YStack } from 'tamagui'\n\nexport type PreferenceItem =\n | { type: 'toggle'; id: string; title: string; description?: string; value: boolean; onValueChange: (v: boolean) => void }\n | { type: 'select'; id: string; title: string; description?: string; value: string; options: { label: string; value: string }[]; onValueChange: (v: string) => void }\n | { type: 'slider'; id: string; title: string; description?: string; value: number; min?: number; max?: number; onValueChange: (v: number) => void }\n | { type: 'action'; id: string; title: string; description?: string; onPress: () => void; destructive?: boolean }\n\nexport type PreferenceSection = {\n title: string\n description?: string\n items: PreferenceItem[]\n}\n\nexport type UserPreferencesProps = {\n sections: PreferenceSection[]\n}\n\nfunction ItemLabel({ title, description, color }: { title: string; description?: string; color?: string }) {\n return (\n <YStack flex={1} gap=\"$1\">\n <SizableText size=\"$4\" fontWeight=\"500\" color={color ?? '$color12'}>{title}</SizableText>\n {description && <SizableText size=\"$2\" color=\"$color9\">{description}</SizableText>}\n </YStack>\n )\n}\n\nfunction ToggleRow({ item }: { item: Extract<PreferenceItem, { type: 'toggle' }> }) {\n return (\n <XStack alignItems=\"center\" gap=\"$3\" paddingVertical=\"$3\" paddingHorizontal=\"$4\">\n <ItemLabel title={item.title} description={item.description} />\n <Switch size=\"$3\" checked={item.value} onCheckedChange={item.onValueChange}>\n <Switch.Thumb animation=\"quick\" />\n </Switch>\n </XStack>\n )\n}\n\nfunction SelectRow({ item }: { item: Extract<PreferenceItem, { type: 'select' }> }) {\n const current = item.options.find(o => o.value === item.value)\n return (\n <XStack alignItems=\"center\" gap=\"$3\" paddingVertical=\"$3\" paddingHorizontal=\"$4\"\n pressStyle={{ backgroundColor: '$color3' }} animation=\"quick\" cursor=\"pointer\"\n onPress={() => {\n const idx = item.options.findIndex(o => o.value === item.value)\n const next = item.options[(idx + 1) % item.options.length]\n if (next) item.onValueChange(next.value)\n }}>\n <ItemLabel title={item.title} description={item.description} />\n <SizableText size=\"$3\" color=\"$color9\" fontWeight=\"500\">{current?.label ?? item.value}</SizableText>\n <SizableText size=\"$4\" color=\"$color8\">›</SizableText>\n </XStack>\n )\n}\n\nfunction SliderRow({ item }: { item: Extract<PreferenceItem, { type: 'slider' }> }) {\n const min = item.min ?? 0\n const max = item.max ?? 100\n return (\n <YStack gap=\"$2\" paddingVertical=\"$3\" paddingHorizontal=\"$4\">\n <XStack justifyContent=\"space-between\" alignItems=\"center\">\n <ItemLabel title={item.title} description={item.description} />\n <SizableText size=\"$3\" fontWeight=\"600\" color=\"$color11\">{item.value}</SizableText>\n </XStack>\n <Slider value={[item.value]} min={min} max={max} step={1}\n onValueChange={([v]) => { if (v !== undefined) item.onValueChange(v) }}>\n <Slider.Track backgroundColor=\"$color4\" height={4}>\n <Slider.TrackActive backgroundColor=\"$color9\" />\n </Slider.Track>\n <Slider.Thumb index={0} size=\"$1.5\" backgroundColor=\"$color9\" borderWidth={0} circular />\n </Slider>\n </YStack>\n )\n}\n\nfunction ActionRow({ item }: { item: Extract<PreferenceItem, { type: 'action' }> }) {\n return (\n <XStack alignItems=\"center\" gap=\"$3\" paddingVertical=\"$3\" paddingHorizontal=\"$4\"\n pressStyle={{ backgroundColor: '$color3' }} animation=\"quick\" cursor=\"pointer\"\n onPress={item.onPress}>\n <ItemLabel title={item.title} description={item.description}\n color={item.destructive ? '$red10' : undefined} />\n <SizableText size=\"$4\" color=\"$color8\">›</SizableText>\n </XStack>\n )\n}\n\nfunction PreferenceRow({ item }: { item: PreferenceItem }) {\n switch (item.type) {\n case 'toggle': return <ToggleRow item={item} />\n case 'select': return <SelectRow item={item} />\n case 'slider': return <SliderRow item={item} />\n case 'action': return <ActionRow item={item} />\n }\n}\n\nexport function UserPreferences({ sections }: UserPreferencesProps) {\n return (\n <YStack gap=\"$5\">\n {sections.map((section, si) => (\n <YStack key={si} gap=\"$2\">\n <YStack paddingHorizontal=\"$1\" gap=\"$0.5\">\n <SizableText size=\"$2\" fontWeight=\"600\" color=\"$color9\" textTransform=\"uppercase\">\n {section.title}\n </SizableText>\n {section.description && (\n <SizableText size=\"$2\" color=\"$color8\">{section.description}</SizableText>\n )}\n </YStack>\n <YStack backgroundColor=\"$color2\" borderRadius=\"$4\" overflow=\"hidden\"\n borderWidth={1} borderColor=\"$color4\">\n {section.items.map((item, ii) => (\n <YStack key={item.id}>\n <PreferenceRow item={item} />\n {ii < section.items.length - 1 && <Separator borderColor=\"$color4\" />}\n </YStack>\n ))}\n </YStack>\n </YStack>\n ))}\n </YStack>\n )\n}\n"],"mappings":"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","names":["Image","import_v5","import_tamagui","import_tamagui","TamaguiButton","import_tamagui","import_tamagui","import_tamagui","TamaguiInput","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_tamagui","Image","TamaguiImage","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_react_native","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_react_native","import_jsx_runtime","import_tamagui","import_react_native","import_jsx_runtime","import_tamagui","import_jsx_runtime","CardContent","import_tamagui","import_jsx_runtime","PlanCard","import_react","import_tamagui","import_jsx_runtime","useCountdown","import_tamagui","import_jsx_runtime","Stars","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","sizes","import_react","import_react_native","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_react","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime"]}