@blinkdotnew/mobile-ui 2.0.0-alpha.4 → 2.0.0-alpha.5

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 CHANGED
@@ -764,7 +764,7 @@ function OnboardingCarousel({
764
764
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_tamagui20.SizableText, { size: "$4", color: "$color10", textAlign: "center", maxWidth: 300, children: step?.description })
765
765
  ] })
766
766
  ] }),
767
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_tamagui20.YStack, { gap: "$4", paddingBottom: "$6", children: [
767
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_tamagui20.YStack, { gap: "$3", paddingBottom: "$2", children: [
768
768
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_tamagui20.XStack, { justifyContent: "center", gap: "$2", children: steps.map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
769
769
  import_tamagui20.Circle,
770
770
  {
@@ -800,7 +800,7 @@ function ChatBubble({ message, showAvatar = true }) {
800
800
  import_tamagui21.XStack,
801
801
  {
802
802
  alignSelf: isUser ? "flex-end" : "flex-start",
803
- maxWidth: "80%",
803
+ maxWidth: "75%",
804
804
  gap: "$2",
805
805
  flexDirection: isUser ? "row-reverse" : "row",
806
806
  children: [
@@ -816,7 +816,7 @@ function ChatBubble({ message, showAvatar = true }) {
816
816
  borderBottomLeftRadius: isUser ? "$5" : "$2",
817
817
  gap: "$1",
818
818
  children: [
819
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_tamagui21.SizableText, { size: "$4", color: isUser ? "$color1" : "$color12", children: message.text }),
819
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_tamagui21.SizableText, { size: "$3", color: isUser ? "$color1" : "$color12", children: message.text }),
820
820
  message.timestamp && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_tamagui21.SizableText, { size: "$1", color: isUser ? "$color3" : "$color9", alignSelf: "flex-end", children: message.timestamp })
821
821
  ]
822
822
  }
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/layouts/StepPageLayout.tsx","../src/layouts/ScreenLayout.tsx","../src/layouts/Section.tsx","../src/layouts/ListItem.tsx","../src/layouts/Divider.tsx","../src/layouts/KeyboardStickyFooter.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"],"sourcesContent":["// Config\nexport { blinkConfig } from './config/tamagui.config'\nexport type { BlinkConfig } from './config/tamagui.config'\n\n// Re-export Tamagui builtins — single import source for consumers\nexport {\n // Layout\n View, XStack, YStack, ZStack, ScrollView, Circle,\n // Text\n H1, H2, H3, H4, H5, H6, Paragraph, SizableText, Text,\n // Forms\n Button, Input, TextArea, Switch, Checkbox, Slider, RadioGroup, Select, Label,\n // Display\n Card, Avatar, Separator, Image as TamaguiImage, Progress, Spinner,\n // Overlay\n Sheet, Dialog, AlertDialog, Popover, Tooltip,\n // Theme\n Theme, TamaguiProvider,\n // Styled\n styled, withStaticProperties,\n // Hooks\n useTheme, useMedia, useThemeName,\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// Interface\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\n// 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\n// 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","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, 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 { Button, SizableText, XStack, YStack, Circle } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type PlanOption = {\n id: string\n name: string\n price: string\n period: string\n features: string[]\n popular?: boolean\n}\n\nexport type PaywallScreenProps = {\n title?: string\n subtitle?: string\n plans: PlanOption[]\n selectedPlan?: string\n onSelectPlan?: (planId: string) => void\n onContinue?: () => void\n onRestore?: () => void\n continueLabel?: string\n}\n\nexport function PaywallScreen({\n title = 'Upgrade Your Experience',\n subtitle = 'Choose the plan that works for you',\n plans,\n selectedPlan,\n onSelectPlan,\n onContinue,\n onRestore,\n continueLabel = 'Continue',\n}: PaywallScreenProps) {\n return (\n <YStack flex={1} padding=\"$4\" gap=\"$5\" backgroundColor=\"$background\">\n <YStack gap=\"$2\" paddingTop=\"$6\">\n <SizableText size=\"$9\" fontWeight=\"700\" textAlign=\"center\">\n {title}\n </SizableText>\n <SizableText size=\"$4\" color=\"$color10\" textAlign=\"center\">\n {subtitle}\n </SizableText>\n </YStack>\n\n <YStack gap=\"$3\" flex={1}>\n {plans.map((plan) => (\n <YStack\n key={plan.id}\n padding=\"$4\"\n borderRadius=\"$5\"\n borderWidth={2}\n borderColor={selectedPlan === plan.id ? '$color9' : '$color4'}\n backgroundColor={selectedPlan === plan.id ? '$color2' : '$color1'}\n pressStyle={{ scale: 0.98 }}\n onPress={() => onSelectPlan?.(plan.id)}\n cursor=\"pointer\"\n >\n <XStack justifyContent=\"space-between\" alignItems=\"center\">\n <YStack>\n <SizableText size=\"$5\" fontWeight=\"600\">\n {plan.name}\n </SizableText>\n <XStack alignItems=\"baseline\" gap=\"$1\">\n <SizableText size=\"$8\" fontWeight=\"700\">\n {plan.price}\n </SizableText>\n <SizableText size=\"$3\" color=\"$color9\">\n /{plan.period}\n </SizableText>\n </XStack>\n </YStack>\n {plan.popular && (\n <YStack backgroundColor=\"$color9\" paddingHorizontal=\"$2\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$1\" color=\"$color1\" fontWeight=\"600\">\n POPULAR\n </SizableText>\n </YStack>\n )}\n </XStack>\n <YStack gap=\"$2\" paddingTop=\"$3\">\n {plan.features.map((feature, i) => (\n <XStack key={i} gap=\"$2\" alignItems=\"center\">\n <Circle size={6} backgroundColor=\"$green9\" />\n <SizableText size=\"$3\" color=\"$color11\">\n {feature}\n </SizableText>\n </XStack>\n ))}\n </YStack>\n </YStack>\n ))}\n </YStack>\n\n <YStack gap=\"$3\" paddingBottom=\"$4\">\n <Button\n size=\"$5\"\n backgroundColor=\"$color9\"\n color=\"$color1\"\n onPress={onContinue}\n hoverStyle={{ backgroundColor: '$color10' }}\n pressStyle={{ backgroundColor: '$color8' }}\n borderRadius=\"$5\"\n >\n {continueLabel}\n </Button>\n {onRestore && (\n <Button size=\"$3\" chromeless onPress={onRestore}>\n <SizableText size=\"$3\" color=\"$color9\">\n Restore Purchases\n </SizableText>\n </Button>\n )}\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=\"$4\" paddingBottom=\"$6\">\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=\"80%\"\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=\"$4\" 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"],"mappings":"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","names":["Image","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_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_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","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/layouts/StepPageLayout.tsx","../src/layouts/ScreenLayout.tsx","../src/layouts/Section.tsx","../src/layouts/ListItem.tsx","../src/layouts/Divider.tsx","../src/layouts/KeyboardStickyFooter.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"],"sourcesContent":["// Config\nexport { blinkConfig } from './config/tamagui.config'\nexport type { BlinkConfig } from './config/tamagui.config'\n\n// Re-export Tamagui builtins — single import source for consumers\nexport {\n // Layout\n View, XStack, YStack, ZStack, ScrollView, Circle,\n // Text\n H1, H2, H3, H4, H5, H6, Paragraph, SizableText, Text,\n // Forms\n Button, Input, TextArea, Switch, Checkbox, Slider, RadioGroup, Select, Label,\n // Display\n Card, Avatar, Separator, Image as TamaguiImage, Progress, Spinner,\n // Overlay\n Sheet, Dialog, AlertDialog, Popover, Tooltip,\n // Theme\n Theme, TamaguiProvider,\n // Styled\n styled, withStaticProperties,\n // Hooks\n useTheme, useMedia, useThemeName,\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// Interface\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\n// 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\n// 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","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, 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 { Button, SizableText, XStack, YStack, Circle } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type PlanOption = {\n id: string\n name: string\n price: string\n period: string\n features: string[]\n popular?: boolean\n}\n\nexport type PaywallScreenProps = {\n title?: string\n subtitle?: string\n plans: PlanOption[]\n selectedPlan?: string\n onSelectPlan?: (planId: string) => void\n onContinue?: () => void\n onRestore?: () => void\n continueLabel?: string\n}\n\nexport function PaywallScreen({\n title = 'Upgrade Your Experience',\n subtitle = 'Choose the plan that works for you',\n plans,\n selectedPlan,\n onSelectPlan,\n onContinue,\n onRestore,\n continueLabel = 'Continue',\n}: PaywallScreenProps) {\n return (\n <YStack flex={1} padding=\"$4\" gap=\"$5\" backgroundColor=\"$background\">\n <YStack gap=\"$2\" paddingTop=\"$6\">\n <SizableText size=\"$9\" fontWeight=\"700\" textAlign=\"center\">\n {title}\n </SizableText>\n <SizableText size=\"$4\" color=\"$color10\" textAlign=\"center\">\n {subtitle}\n </SizableText>\n </YStack>\n\n <YStack gap=\"$3\" flex={1}>\n {plans.map((plan) => (\n <YStack\n key={plan.id}\n padding=\"$4\"\n borderRadius=\"$5\"\n borderWidth={2}\n borderColor={selectedPlan === plan.id ? '$color9' : '$color4'}\n backgroundColor={selectedPlan === plan.id ? '$color2' : '$color1'}\n pressStyle={{ scale: 0.98 }}\n onPress={() => onSelectPlan?.(plan.id)}\n cursor=\"pointer\"\n >\n <XStack justifyContent=\"space-between\" alignItems=\"center\">\n <YStack>\n <SizableText size=\"$5\" fontWeight=\"600\">\n {plan.name}\n </SizableText>\n <XStack alignItems=\"baseline\" gap=\"$1\">\n <SizableText size=\"$8\" fontWeight=\"700\">\n {plan.price}\n </SizableText>\n <SizableText size=\"$3\" color=\"$color9\">\n /{plan.period}\n </SizableText>\n </XStack>\n </YStack>\n {plan.popular && (\n <YStack backgroundColor=\"$color9\" paddingHorizontal=\"$2\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$1\" color=\"$color1\" fontWeight=\"600\">\n POPULAR\n </SizableText>\n </YStack>\n )}\n </XStack>\n <YStack gap=\"$2\" paddingTop=\"$3\">\n {plan.features.map((feature, i) => (\n <XStack key={i} gap=\"$2\" alignItems=\"center\">\n <Circle size={6} backgroundColor=\"$green9\" />\n <SizableText size=\"$3\" color=\"$color11\">\n {feature}\n </SizableText>\n </XStack>\n ))}\n </YStack>\n </YStack>\n ))}\n </YStack>\n\n <YStack gap=\"$3\" paddingBottom=\"$4\">\n <Button\n size=\"$5\"\n backgroundColor=\"$color9\"\n color=\"$color1\"\n onPress={onContinue}\n hoverStyle={{ backgroundColor: '$color10' }}\n pressStyle={{ backgroundColor: '$color8' }}\n borderRadius=\"$5\"\n >\n {continueLabel}\n </Button>\n {onRestore && (\n <Button size=\"$3\" chromeless onPress={onRestore}>\n <SizableText size=\"$3\" color=\"$color9\">\n Restore Purchases\n </SizableText>\n </Button>\n )}\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"],"mappings":"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","names":["Image","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_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_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime","import_tamagui","import_jsx_runtime"]}
package/dist/index.mjs CHANGED
@@ -712,7 +712,7 @@ function OnboardingCarousel({
712
712
  /* @__PURE__ */ jsx12(SizableText11, { size: "$4", color: "$color10", textAlign: "center", maxWidth: 300, children: step?.description })
713
713
  ] })
714
714
  ] }),
715
- /* @__PURE__ */ jsxs9(YStack9, { gap: "$4", paddingBottom: "$6", children: [
715
+ /* @__PURE__ */ jsxs9(YStack9, { gap: "$3", paddingBottom: "$2", children: [
716
716
  /* @__PURE__ */ jsx12(XStack6, { justifyContent: "center", gap: "$2", children: steps.map((_, i) => /* @__PURE__ */ jsx12(
717
717
  Circle3,
718
718
  {
@@ -748,7 +748,7 @@ function ChatBubble({ message, showAvatar = true }) {
748
748
  XStack7,
749
749
  {
750
750
  alignSelf: isUser ? "flex-end" : "flex-start",
751
- maxWidth: "80%",
751
+ maxWidth: "75%",
752
752
  gap: "$2",
753
753
  flexDirection: isUser ? "row-reverse" : "row",
754
754
  children: [
@@ -764,7 +764,7 @@ function ChatBubble({ message, showAvatar = true }) {
764
764
  borderBottomLeftRadius: isUser ? "$5" : "$2",
765
765
  gap: "$1",
766
766
  children: [
767
- /* @__PURE__ */ jsx13(SizableText12, { size: "$4", color: isUser ? "$color1" : "$color12", children: message.text }),
767
+ /* @__PURE__ */ jsx13(SizableText12, { size: "$3", color: isUser ? "$color1" : "$color12", children: message.text }),
768
768
  message.timestamp && /* @__PURE__ */ jsx13(SizableText12, { size: "$1", color: isUser ? "$color3" : "$color9", alignSelf: "flex-end", children: message.timestamp })
769
769
  ]
770
770
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config/tamagui.config.ts","../src/index.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/layouts/StepPageLayout.tsx","../src/layouts/ScreenLayout.tsx","../src/layouts/Section.tsx","../src/layouts/ListItem.tsx","../src/layouts/Divider.tsx","../src/layouts/KeyboardStickyFooter.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"],"sourcesContent":["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","// Config\nexport { blinkConfig } from './config/tamagui.config'\nexport type { BlinkConfig } from './config/tamagui.config'\n\n// Re-export Tamagui builtins — single import source for consumers\nexport {\n // Layout\n View, XStack, YStack, ZStack, ScrollView, Circle,\n // Text\n H1, H2, H3, H4, H5, H6, Paragraph, SizableText, Text,\n // Forms\n Button, Input, TextArea, Switch, Checkbox, Slider, RadioGroup, Select, Label,\n // Display\n Card, Avatar, Separator, Image as TamaguiImage, Progress, Spinner,\n // Overlay\n Sheet, Dialog, AlertDialog, Popover, Tooltip,\n // Theme\n Theme, TamaguiProvider,\n // Styled\n styled, withStaticProperties,\n // Hooks\n useTheme, useMedia, useThemeName,\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// Interface\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\n// 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\n// 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","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, 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 { Button, SizableText, XStack, YStack, Circle } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type PlanOption = {\n id: string\n name: string\n price: string\n period: string\n features: string[]\n popular?: boolean\n}\n\nexport type PaywallScreenProps = {\n title?: string\n subtitle?: string\n plans: PlanOption[]\n selectedPlan?: string\n onSelectPlan?: (planId: string) => void\n onContinue?: () => void\n onRestore?: () => void\n continueLabel?: string\n}\n\nexport function PaywallScreen({\n title = 'Upgrade Your Experience',\n subtitle = 'Choose the plan that works for you',\n plans,\n selectedPlan,\n onSelectPlan,\n onContinue,\n onRestore,\n continueLabel = 'Continue',\n}: PaywallScreenProps) {\n return (\n <YStack flex={1} padding=\"$4\" gap=\"$5\" backgroundColor=\"$background\">\n <YStack gap=\"$2\" paddingTop=\"$6\">\n <SizableText size=\"$9\" fontWeight=\"700\" textAlign=\"center\">\n {title}\n </SizableText>\n <SizableText size=\"$4\" color=\"$color10\" textAlign=\"center\">\n {subtitle}\n </SizableText>\n </YStack>\n\n <YStack gap=\"$3\" flex={1}>\n {plans.map((plan) => (\n <YStack\n key={plan.id}\n padding=\"$4\"\n borderRadius=\"$5\"\n borderWidth={2}\n borderColor={selectedPlan === plan.id ? '$color9' : '$color4'}\n backgroundColor={selectedPlan === plan.id ? '$color2' : '$color1'}\n pressStyle={{ scale: 0.98 }}\n onPress={() => onSelectPlan?.(plan.id)}\n cursor=\"pointer\"\n >\n <XStack justifyContent=\"space-between\" alignItems=\"center\">\n <YStack>\n <SizableText size=\"$5\" fontWeight=\"600\">\n {plan.name}\n </SizableText>\n <XStack alignItems=\"baseline\" gap=\"$1\">\n <SizableText size=\"$8\" fontWeight=\"700\">\n {plan.price}\n </SizableText>\n <SizableText size=\"$3\" color=\"$color9\">\n /{plan.period}\n </SizableText>\n </XStack>\n </YStack>\n {plan.popular && (\n <YStack backgroundColor=\"$color9\" paddingHorizontal=\"$2\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$1\" color=\"$color1\" fontWeight=\"600\">\n POPULAR\n </SizableText>\n </YStack>\n )}\n </XStack>\n <YStack gap=\"$2\" paddingTop=\"$3\">\n {plan.features.map((feature, i) => (\n <XStack key={i} gap=\"$2\" alignItems=\"center\">\n <Circle size={6} backgroundColor=\"$green9\" />\n <SizableText size=\"$3\" color=\"$color11\">\n {feature}\n </SizableText>\n </XStack>\n ))}\n </YStack>\n </YStack>\n ))}\n </YStack>\n\n <YStack gap=\"$3\" paddingBottom=\"$4\">\n <Button\n size=\"$5\"\n backgroundColor=\"$color9\"\n color=\"$color1\"\n onPress={onContinue}\n hoverStyle={{ backgroundColor: '$color10' }}\n pressStyle={{ backgroundColor: '$color8' }}\n borderRadius=\"$5\"\n >\n {continueLabel}\n </Button>\n {onRestore && (\n <Button size=\"$3\" chromeless onPress={onRestore}>\n <SizableText size=\"$3\" color=\"$color9\">\n Restore Purchases\n </SizableText>\n </Button>\n )}\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=\"$4\" paddingBottom=\"$6\">\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=\"80%\"\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=\"$4\" 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"],"mappings":"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","names":["View","XStack","YStack","Circle","H1","H2","H3","H4","H5","H6","SizableText","Button","Input","Switch","Card","Avatar","Separator","Image","AlertDialog","styled","withStaticProperties","styled","styled","styled","View","SizableText","SizableText","jsx","SizableText","styled","jsx","jsxs","styled","Button","XStack","YStack","jsx","jsxs","styled","View","styled","Image","styled","SizableText","View","jsx","SizableText","YStack","jsx","jsxs","styled","YStack","SizableText","YStack","jsx","jsxs","styled","SizableText","XStack","YStack","View","jsx","jsxs","Separator","SizableText","XStack","jsx","jsxs","YStack","jsx","Button","SizableText","XStack","YStack","Circle","jsx","jsxs","useState","Button","SizableText","XStack","YStack","Circle","jsx","jsxs","SizableText","XStack","YStack","Circle","Image","jsx","jsxs","Separator","SizableText","XStack","YStack","jsx","jsxs","Button","SizableText","YStack","jsx","jsxs","Circle","Image","SizableText","XStack","YStack","jsx","jsxs"]}
1
+ {"version":3,"sources":["../src/config/tamagui.config.ts","../src/index.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/layouts/StepPageLayout.tsx","../src/layouts/ScreenLayout.tsx","../src/layouts/Section.tsx","../src/layouts/ListItem.tsx","../src/layouts/Divider.tsx","../src/layouts/KeyboardStickyFooter.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"],"sourcesContent":["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","// Config\nexport { blinkConfig } from './config/tamagui.config'\nexport type { BlinkConfig } from './config/tamagui.config'\n\n// Re-export Tamagui builtins — single import source for consumers\nexport {\n // Layout\n View, XStack, YStack, ZStack, ScrollView, Circle,\n // Text\n H1, H2, H3, H4, H5, H6, Paragraph, SizableText, Text,\n // Forms\n Button, Input, TextArea, Switch, Checkbox, Slider, RadioGroup, Select, Label,\n // Display\n Card, Avatar, Separator, Image as TamaguiImage, Progress, Spinner,\n // Overlay\n Sheet, Dialog, AlertDialog, Popover, Tooltip,\n // Theme\n Theme, TamaguiProvider,\n // Styled\n styled, withStaticProperties,\n // Hooks\n useTheme, useMedia, useThemeName,\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// Interface\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\n// 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\n// 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","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, 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 { Button, SizableText, XStack, YStack, Circle } from 'tamagui'\nimport type { ReactNode } from 'react'\n\nexport type PlanOption = {\n id: string\n name: string\n price: string\n period: string\n features: string[]\n popular?: boolean\n}\n\nexport type PaywallScreenProps = {\n title?: string\n subtitle?: string\n plans: PlanOption[]\n selectedPlan?: string\n onSelectPlan?: (planId: string) => void\n onContinue?: () => void\n onRestore?: () => void\n continueLabel?: string\n}\n\nexport function PaywallScreen({\n title = 'Upgrade Your Experience',\n subtitle = 'Choose the plan that works for you',\n plans,\n selectedPlan,\n onSelectPlan,\n onContinue,\n onRestore,\n continueLabel = 'Continue',\n}: PaywallScreenProps) {\n return (\n <YStack flex={1} padding=\"$4\" gap=\"$5\" backgroundColor=\"$background\">\n <YStack gap=\"$2\" paddingTop=\"$6\">\n <SizableText size=\"$9\" fontWeight=\"700\" textAlign=\"center\">\n {title}\n </SizableText>\n <SizableText size=\"$4\" color=\"$color10\" textAlign=\"center\">\n {subtitle}\n </SizableText>\n </YStack>\n\n <YStack gap=\"$3\" flex={1}>\n {plans.map((plan) => (\n <YStack\n key={plan.id}\n padding=\"$4\"\n borderRadius=\"$5\"\n borderWidth={2}\n borderColor={selectedPlan === plan.id ? '$color9' : '$color4'}\n backgroundColor={selectedPlan === plan.id ? '$color2' : '$color1'}\n pressStyle={{ scale: 0.98 }}\n onPress={() => onSelectPlan?.(plan.id)}\n cursor=\"pointer\"\n >\n <XStack justifyContent=\"space-between\" alignItems=\"center\">\n <YStack>\n <SizableText size=\"$5\" fontWeight=\"600\">\n {plan.name}\n </SizableText>\n <XStack alignItems=\"baseline\" gap=\"$1\">\n <SizableText size=\"$8\" fontWeight=\"700\">\n {plan.price}\n </SizableText>\n <SizableText size=\"$3\" color=\"$color9\">\n /{plan.period}\n </SizableText>\n </XStack>\n </YStack>\n {plan.popular && (\n <YStack backgroundColor=\"$color9\" paddingHorizontal=\"$2\" paddingVertical=\"$1\" borderRadius=\"$10\">\n <SizableText size=\"$1\" color=\"$color1\" fontWeight=\"600\">\n POPULAR\n </SizableText>\n </YStack>\n )}\n </XStack>\n <YStack gap=\"$2\" paddingTop=\"$3\">\n {plan.features.map((feature, i) => (\n <XStack key={i} gap=\"$2\" alignItems=\"center\">\n <Circle size={6} backgroundColor=\"$green9\" />\n <SizableText size=\"$3\" color=\"$color11\">\n {feature}\n </SizableText>\n </XStack>\n ))}\n </YStack>\n </YStack>\n ))}\n </YStack>\n\n <YStack gap=\"$3\" paddingBottom=\"$4\">\n <Button\n size=\"$5\"\n backgroundColor=\"$color9\"\n color=\"$color1\"\n onPress={onContinue}\n hoverStyle={{ backgroundColor: '$color10' }}\n pressStyle={{ backgroundColor: '$color8' }}\n borderRadius=\"$5\"\n >\n {continueLabel}\n </Button>\n {onRestore && (\n <Button size=\"$3\" chromeless onPress={onRestore}>\n <SizableText size=\"$3\" color=\"$color9\">\n Restore Purchases\n </SizableText>\n </Button>\n )}\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"],"mappings":"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","names":["View","XStack","YStack","Circle","H1","H2","H3","H4","H5","H6","SizableText","Button","Input","Switch","Card","Avatar","Separator","Image","AlertDialog","styled","withStaticProperties","styled","styled","styled","View","SizableText","SizableText","jsx","SizableText","styled","jsx","jsxs","styled","Button","XStack","YStack","jsx","jsxs","styled","View","styled","Image","styled","SizableText","View","jsx","SizableText","YStack","jsx","jsxs","styled","YStack","SizableText","YStack","jsx","jsxs","styled","SizableText","XStack","YStack","View","jsx","jsxs","Separator","SizableText","XStack","jsx","jsxs","YStack","jsx","Button","SizableText","XStack","YStack","Circle","jsx","jsxs","useState","Button","SizableText","XStack","YStack","Circle","jsx","jsxs","SizableText","XStack","YStack","Circle","Image","jsx","jsxs","Separator","SizableText","XStack","YStack","jsx","jsxs","Button","SizableText","YStack","jsx","jsxs","Circle","Image","SizableText","XStack","YStack","jsx","jsxs"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blinkdotnew/mobile-ui",
3
- "version": "2.0.0-alpha.4",
3
+ "version": "2.0.0-alpha.5",
4
4
  "description": "Blink Mobile UI SDK — Tamagui-powered component library for Expo",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",