@blinkdotnew/mobile-ui 2.0.0-alpha.9 → 2.0.1

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.d.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import * as tamagui from 'tamagui';
2
- import { TamaguiInternalConfig, GetProps, YStack } from 'tamagui';
3
- export { Accordion, Adapt, AlertDialog, Anchor, Avatar, TamaguiProvider as BlinkProvider, Button, Card, Checkbox, Circle, ColorTokens, Dialog, Fieldset, Form, GetProps, H1, H2, H3, H4, H5, H6, Input, Label, Paragraph, Popover, PortalProvider, Progress, RadioGroup, ScrollView, Select, Separator, Sheet, SizableText, SizeTokens, Slider, Spinner, Square, Switch, Tabs, Image as TamaguiImage, ListItem as TamaguiListItem, TamaguiProvider, Text, TextArea, Theme, ThemeTokens, ToggleGroup, Tooltip, TooltipSimple, Unspaced, View, VisuallyHidden, XGroup, XStack, YGroup, YStack, ZStack, createTamagui, styled, useMedia, useTheme, useThemeName, withStaticProperties } from 'tamagui';
2
+ import { TamaguiInternalConfig, GetProps, YStack, Select, Button as Button$1 } from 'tamagui';
3
+ export { Accordion, Adapt, AlertDialog, Anchor, AnimatePresence, Article, Aside, Avatar, TamaguiProvider as BlinkProvider, Button, Card, Checkbox, Circle, ColorTokens, Dialog, EnsureFlexed, Fieldset, Footer, Form, Frame, GetProps, Group, H1, H2, H3, H4, H5, H6, Header, Heading, Input, Label, Main, Nav, Paragraph, Popover, Portal, PortalHost, PortalItem, PortalProvider, Progress, RadioGroup, ScrollView, Select, Separator, Sheet, SizableStack, SizableText, SizeTokens, Slider, Spacer, Spinner, Square, Stack, Switch, Tabs, Image as TamaguiImage, ListItem as TamaguiListItem, TamaguiProvider, Text, TextArea, Theme, ThemeTokens, ThemeableStack, ToggleGroup, Tooltip, TooltipSimple, Unspaced, View, VisuallyHidden, XGroup, XStack, YGroup, YStack, ZStack, addTheme, composeEventHandlers, composeRefs, createFont, createMedia, createStyledContext, createTamagui, createTheme, createTokens, createVariable, getConfig, getToken, getTokenValue, getTokens, isClient, isWeb, replaceTheme, styled, updateTheme, useComposedRefs, useControllableState, useDebounce, useDebounceValue, useDidFinishSSR, useEvent, useForceUpdate, useIsPresent, useIsomorphicLayoutEffect, useMedia, usePresence, useTheme, useThemeName, useWindowDimensions, withStaticProperties } from 'tamagui';
4
4
  export { defaultConfig as tamaguiDefaultConfig } from '@tamagui/config/v5';
5
5
  import * as react from 'react';
6
- import { ReactNode } from 'react';
6
+ import react__default, { ReactNode } from 'react';
7
7
  import * as _tamagui_core from '@tamagui/core';
8
8
  import * as _tamagui_web from '@tamagui/web';
9
- import * as react_jsx_runtime from 'react/jsx-runtime';
9
+ import * as react_native from 'react-native';
10
+ export * from '@tamagui/lucide-icons';
10
11
 
11
12
  declare const blinkConfig: TamaguiInternalConfig;
12
13
  type BlinkConfig = typeof blinkConfig;
@@ -15,7 +16,67 @@ declare module 'tamagui' {
15
16
  }
16
17
  }
17
18
 
18
- declare const Button: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps & tamagui.TextContextStyles & {
19
+ /**
20
+ * Maps the 16 Blink platform design themes (from auto-engineer src/types/color-theme.ts)
21
+ * to Tamagui-compatible theme palettes via createThemes.
22
+ *
23
+ * Usage:
24
+ * import { createBlinkThemes, BLINK_DESIGN_THEMES } from '@blinkdotnew/mobile-ui'
25
+ * const themes = createBlinkThemes('ocean-teal')
26
+ * const config = createTamagui({ ...tamaguiDefaultConfig, themes })
27
+ */
28
+ type BlinkDesignThemeId = 'mono' | 'ocean-teal' | 'warm-amber' | 'rose-coral' | 'lavender' | 'glacier' | 'forest' | 'obsidian' | 'solar' | 'orchid' | 'indigo' | 'cosmic-night' | 'soft-pop' | 'neo-brutalism' | 'vintage-paper' | 'modern-minimal' | 'bubblegum';
29
+ interface BlinkColorPalette {
30
+ primary: string;
31
+ primary_foreground: string;
32
+ secondary: string;
33
+ secondary_foreground: string;
34
+ accent: string;
35
+ background: string;
36
+ dark_mode: string;
37
+ }
38
+ interface BlinkDesignTheme {
39
+ id: BlinkDesignThemeId;
40
+ name: string;
41
+ description: string;
42
+ palette: BlinkColorPalette;
43
+ }
44
+ declare const BLINK_DESIGN_THEMES: Record<BlinkDesignThemeId, BlinkDesignTheme>;
45
+ /**
46
+ * Generates Tamagui-compatible theme config for createThemes from a platform design theme.
47
+ *
48
+ * Usage with createThemes:
49
+ * ```ts
50
+ * import { createThemes } from '@tamagui/theme-builder'
51
+ * import { getBlinkThemePalettes } from '@blinkdotnew/mobile-ui'
52
+ *
53
+ * const palettes = getBlinkThemePalettes('ocean-teal')
54
+ * const themes = createThemes({
55
+ * base: { palette: palettes.base },
56
+ * accent: { palette: palettes.accent },
57
+ * })
58
+ * ```
59
+ */
60
+ declare function getBlinkThemePalettes(themeId: BlinkDesignThemeId): {
61
+ base: {
62
+ light: string[];
63
+ dark: string[];
64
+ };
65
+ accent: {
66
+ light: string[];
67
+ dark: string[];
68
+ };
69
+ };
70
+ /**
71
+ * All available design theme IDs for enumeration.
72
+ */
73
+ declare const BLINK_DESIGN_THEME_IDS: BlinkDesignThemeId[];
74
+ /**
75
+ * Get theme metadata (name, description) for UI pickers.
76
+ */
77
+ declare function getBlinkDesignTheme(themeId: BlinkDesignThemeId): BlinkDesignTheme | undefined;
78
+
79
+ declare const Button: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps & tamagui.TextContextStyles & {
19
80
  textProps?: Partial<tamagui.SizableTextProps>;
20
81
  noTextWrap?: boolean;
21
82
  } & _tamagui_web.ThemeableProps & {
@@ -41,13 +102,13 @@ declare const Button: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tam
41
102
  size?: number | "lg" | "md" | "sm" | tamagui.SizeTokens | undefined;
42
103
  disabled?: boolean | undefined;
43
104
  elevation?: number | tamagui.SizeTokens | undefined;
44
- variant?: "transparent" | "default" | "primary" | "outlined" | "floating" | "destructive" | undefined;
45
105
  inset?: number | tamagui.SizeTokens | {
46
106
  top?: number;
47
107
  bottom?: number;
48
108
  left?: number;
49
109
  right?: number;
50
110
  } | null | undefined;
111
+ variant?: "transparent" | "default" | "primary" | "outlined" | "floating" | "destructive" | undefined;
51
112
  unstyled?: boolean | undefined;
52
113
  transparent?: boolean | undefined;
53
114
  fullscreen?: boolean | undefined;
@@ -65,7 +126,7 @@ declare const Button: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tam
65
126
  }, _tamagui_web.StaticConfigPublic>;
66
127
  type ButtonProps = GetProps<typeof Button>;
67
128
 
68
- declare const BlinkText: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, tamagui.TextNonStyleProps, _tamagui_web.TextStylePropsBase, {
129
+ declare const BlinkText: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiTextElement, tamagui.TextNonStyleProps, _tamagui_web.TextStylePropsBase, {
69
130
  size?: tamagui.FontSizeTokens | undefined;
70
131
  bold?: boolean | undefined;
71
132
  variant?: "body" | "display" | "h1" | "h2" | "h3" | "h4" | "bodySmall" | "caption" | "small" | undefined;
@@ -76,13 +137,13 @@ declare const BlinkText: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, t
76
137
  }, _tamagui_web.StaticConfigPublic>;
77
138
  type BlinkTextProps = GetProps<typeof BlinkText>;
78
139
 
79
- declare const CardFrame: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
140
+ declare const CardFrame: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
80
141
  size?: "lg" | "md" | "sm" | undefined;
81
142
  variant?: "outlined" | "flat" | "elevated" | undefined;
82
143
  pressable?: boolean | undefined;
83
144
  }, _tamagui_web.StaticConfigPublic>;
84
145
  type CardProps = GetProps<typeof CardFrame>;
85
- declare const Card: react.ForwardRefExoticComponent<Omit<_tamagui_core.RNTamaguiViewNonStyleProps, keyof _tamagui_web.StackStyleBase> & _tamagui_web.WithThemeValues<_tamagui_web.StackStyleBase> & {
146
+ declare const Card: react.ForwardRefExoticComponent<Omit<_tamagui_core.RNTamaguiViewNonStyleProps, "size" | keyof _tamagui_web.StackStyleBase | "variant" | "pressable"> & _tamagui_web.WithThemeValues<_tamagui_web.StackStyleBase> & {
86
147
  size?: "lg" | "md" | "sm" | undefined;
87
148
  variant?: "outlined" | "flat" | "elevated" | undefined;
88
149
  pressable?: boolean | undefined;
@@ -94,23 +155,23 @@ declare const Card: react.ForwardRefExoticComponent<Omit<_tamagui_core.RNTamagui
94
155
  size?: "lg" | "md" | "sm" | undefined;
95
156
  variant?: "outlined" | "flat" | "elevated" | undefined;
96
157
  pressable?: boolean | undefined;
97
- }>> & react.RefAttributes<any>> & _tamagui_web.StaticComponentObject<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
158
+ }>> & react.RefAttributes<tamagui.TamaguiElement>> & _tamagui_web.StaticComponentObject<_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
98
159
  size?: "lg" | "md" | "sm" | undefined;
99
160
  variant?: "outlined" | "flat" | "elevated" | undefined;
100
161
  pressable?: boolean | undefined;
101
162
  }, _tamagui_web.StaticConfigPublic> & Omit<_tamagui_web.StaticConfigPublic, "staticConfig" | "extractable" | "styleable"> & {
102
- __tama: [_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
163
+ __tama: [_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
103
164
  size?: "lg" | "md" | "sm" | undefined;
104
165
  variant?: "outlined" | "flat" | "elevated" | undefined;
105
166
  pressable?: boolean | undefined;
106
167
  }, _tamagui_web.StaticConfigPublic];
107
168
  } & {
108
- Header: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
109
- Content: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
110
- Footer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
169
+ Header: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
170
+ Content: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
171
+ Footer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
111
172
  };
112
173
 
113
- declare const InputField: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, TextInput, any, _tamagui_web.TextStylePropsBase & {
174
+ declare const InputField: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, react_native.TextInput, _tamagui_web.TamaguiComponentPropsBaseBase & react_native.TextInputProps & tamagui.InputExtraProps, _tamagui_web.TextStylePropsBase & {
114
175
  readonly placeholderTextColor?: Omit<tamagui.ColorTokens | _tamagui_web.ThemeValueFallbackColor, "unset"> | undefined;
115
176
  readonly selectionColor?: Omit<tamagui.ColorTokens | _tamagui_web.ThemeValueFallbackColor, "unset"> | undefined;
116
177
  }, {
@@ -131,7 +192,7 @@ type InputProps = GetProps<typeof InputField> & {
131
192
  error?: string;
132
193
  hint?: string;
133
194
  };
134
- declare function Input({ label, error, hint, ...props }: InputProps): react_jsx_runtime.JSX.Element;
195
+ declare function Input({ label, error, hint, ...props }: InputProps): react.JSX.Element;
135
196
 
136
197
  type SimpleSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
137
198
  type AvatarProps = {
@@ -139,17 +200,17 @@ type AvatarProps = {
139
200
  name?: string;
140
201
  size?: number | SimpleSize;
141
202
  };
142
- declare const Avatar: react.MemoExoticComponent<({ uri, name, size: sizeIn }: AvatarProps) => react_jsx_runtime.JSX.Element>;
203
+ declare const Avatar: react.MemoExoticComponent<({ uri, name, size: sizeIn }: AvatarProps) => react.JSX.Element>;
143
204
 
144
- declare const SubHeading: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, tamagui.TextNonStyleProps, _tamagui_web.TextStylePropsBase, {
205
+ declare const SubHeading: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiTextElement, tamagui.TextNonStyleProps, _tamagui_web.TextStylePropsBase, {
145
206
  size?: tamagui.FontSizeTokens | undefined;
146
207
  unstyled?: boolean | undefined;
147
208
  }, _tamagui_web.StaticConfigPublic>;
148
209
  declare function SepHeading({ children }: {
149
210
  children: ReactNode;
150
- }): react_jsx_runtime.JSX.Element;
211
+ }): react.JSX.Element;
151
212
 
152
- declare const PageContainer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
213
+ declare const PageContainer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
153
214
  elevation?: number | tamagui.SizeTokens | undefined;
154
215
  inset?: number | tamagui.SizeTokens | {
155
216
  top?: number;
@@ -159,7 +220,7 @@ declare const PageContainer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, an
159
220
  } | null | undefined;
160
221
  fullscreen?: boolean | undefined;
161
222
  }, _tamagui_web.StaticConfigPublic>;
162
- declare const PageMainContainer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
223
+ declare const PageMainContainer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
163
224
  elevation?: number | tamagui.SizeTokens | undefined;
164
225
  inset?: number | tamagui.SizeTokens | {
165
226
  top?: number;
@@ -172,30 +233,30 @@ declare const PageMainContainer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer
172
233
 
173
234
  declare function DialogProvider({ children }: {
174
235
  children: ReactNode;
175
- }): react_jsx_runtime.JSX.Element;
236
+ }): react.JSX.Element;
176
237
  declare const showError: (error: unknown, title?: string) => void;
177
238
  declare const dialogConfirm: (props: {
178
239
  title?: string;
179
240
  description?: string;
180
241
  }) => Promise<boolean>;
181
242
 
182
- declare const Pressable: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
243
+ declare const Pressable: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
183
244
 
184
- declare const Image: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, unknown, _tamagui_web.TamaguiComponentPropsBaseBase & Omit<Omit<_tamagui_web.GetFinalProps<any, _tamagui_web.StackStyleBase, {}>, "borderRadius"> & {
245
+ declare const Image: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, unknown, _tamagui_web.TamaguiComponentPropsBaseBase & Omit<Omit<_tamagui_web.GetFinalProps<_tamagui_web.TamaguiComponentPropsBaseBase & react_native.ImageProps, _tamagui_web.StackStyleBase, {}>, "borderRadius"> & {
185
246
  borderRadius?: tamagui.RadiusTokens;
186
- }, "style" | "onLayout" | "width" | "height" | "resizeMode"> & {
247
+ }, "style" | "onLayout" | "height" | "width" | "resizeMode"> & {
187
248
  width?: string | number | tamagui.SizeTokens | tamagui.ThemeValueFallback;
188
249
  height?: string | number | tamagui.SizeTokens | tamagui.ThemeValueFallback;
189
- src?: string | any;
190
- resizeMode?: any;
250
+ src?: string | (react_native.ImageSourcePropType | undefined);
251
+ resizeMode?: react_native.ImageResizeMode | undefined;
191
252
  objectFit?: React.CSSProperties["objectFit"];
192
- } & Omit<tamagui.StackProps, string | number | symbol>, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
253
+ } & Omit<tamagui.StackProps, "theme" | "debug" | "space" | "zIndex" | "bottom" | "backgroundColor" | "content" | "alignContent" | "flexGrow" | "alignItems" | "justifyContent" | "left" | "margin" | "maxHeight" | "maxWidth" | "marginBottom" | "minHeight" | "minWidth" | "marginLeft" | "marginRight" | "marginTop" | "marginHorizontal" | "marginVertical" | "padding" | "paddingBottom" | "paddingLeft" | "paddingRight" | "paddingTop" | "paddingHorizontal" | "paddingVertical" | "right" | "borderRadius" | "userSelect" | "alignSelf" | "flexShrink" | "top" | "transform" | "background" | "borderColor" | "outlineColor" | "shadowColor" | "hitSlop" | "pointerEvents" | "display" | "children" | "target" | "htmlFor" | "asChild" | "dangerouslySetInnerHTML" | "disabled" | "className" | "themeShallow" | "themeInverse" | "id" | "tag" | "group" | "untilMeasured" | "componentName" | "tabIndex" | "role" | "disableOptimization" | "forceStyle" | "disableClassName" | "testID" | "nativeID" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "aria-label" | "accessibilityRole" | "accessibilityState" | "aria-busy" | "aria-checked" | "aria-disabled" | "aria-expanded" | "aria-selected" | "accessibilityHint" | "accessibilityValue" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "onAccessibilityAction" | "importantForAccessibility" | "aria-hidden" | "aria-modal" | "accessibilityLabelledBy" | "aria-labelledby" | "accessibilityLiveRegion" | "aria-live" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "accessibilityLanguage" | "accessibilityShowsLargeContentViewer" | "accessibilityLargeContentTitle" | "x" | "y" | "perspective" | "scale" | "scaleX" | "scaleY" | "skewX" | "skewY" | "matrix" | "rotate" | "rotateY" | "rotateX" | "rotateZ" | "transition" | "textWrap" | "contain" | "touchAction" | "cursor" | "outlineOffset" | "outlineStyle" | "outlineWidth" | "scrollbarWidth" | "transformOrigin" | "filter" | "mixBlendMode" | "backgroundImage" | "backgroundOrigin" | "backgroundPosition" | "backgroundRepeat" | "backgroundSize" | "backgroundClip" | "backgroundBlendMode" | "backgroundAttachment" | "clipPath" | "caretColor" | "transformStyle" | "mask" | "maskImage" | "textEmphasis" | "borderImage" | "float" | "overflowBlock" | "overflowInline" | "maskBorder" | "maskBorderMode" | "maskBorderOutset" | "maskBorderRepeat" | "maskBorderSlice" | "maskBorderSource" | "maskBorderWidth" | "maskClip" | "maskComposite" | "maskMode" | "maskOrigin" | "maskPosition" | "maskRepeat" | "maskSize" | "maskType" | "gridRow" | "gridRowEnd" | "gridRowGap" | "gridRowStart" | "gridColumn" | "gridColumnEnd" | "gridColumnGap" | "gridColumnStart" | "gridTemplateColumns" | "gridTemplateAreas" | "backdropFilter" | "containerType" | "blockSize" | "inlineSize" | "minBlockSize" | "maxBlockSize" | "objectFit" | "verticalAlign" | "minInlineSize" | "maxInlineSize" | "borderInlineColor" | "borderInlineStartColor" | "borderInlineEndColor" | "borderBlockWidth" | "borderBlockStartWidth" | "borderBlockEndWidth" | "borderInlineWidth" | "borderInlineStartWidth" | "borderInlineEndWidth" | "borderBlockStyle" | "borderBlockStartStyle" | "borderBlockEndStyle" | "borderInlineStyle" | "borderInlineStartStyle" | "borderInlineEndStyle" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "insetBlock" | "insetBlockStart" | "insetBlockEnd" | "insetInline" | "insetInlineStart" | "insetInlineEnd" | "spaceDirection" | "separator" | "animation" | "animateOnly" | "animatePresence" | "passThrough" | "backfaceVisibility" | "borderBlockColor" | "borderBlockEndColor" | "borderBlockStartColor" | "borderBottomColor" | "borderBottomEndRadius" | "borderBottomLeftRadius" | "borderBottomRightRadius" | "borderBottomStartRadius" | "borderCurve" | "borderEndColor" | "borderEndEndRadius" | "borderEndStartRadius" | "borderLeftColor" | "borderRightColor" | "borderStartColor" | "borderStartEndRadius" | "borderStartStartRadius" | "borderStyle" | "borderTopColor" | "borderTopEndRadius" | "borderTopLeftRadius" | "borderTopRightRadius" | "borderTopStartRadius" | "opacity" | "isolation" | "boxShadow" | "aspectRatio" | "borderBottomWidth" | "borderEndWidth" | "borderLeftWidth" | "borderRightWidth" | "borderStartWidth" | "borderTopWidth" | "borderWidth" | "end" | "flex" | "flexBasis" | "flexDirection" | "rowGap" | "gap" | "columnGap" | "flexWrap" | "height" | "marginEnd" | "marginStart" | "overflow" | "paddingEnd" | "paddingStart" | "position" | "start" | "width" | "direction" | "inset" | "shadowOffset" | "shadowOpacity" | "shadowRadius" | "transformMatrix" | "rotation" | "translateX" | "translateY" | `$${string}` | `$${number}` | _tamagui_web.GroupMediaKeys | `$theme-${string}` | `$theme-${number}` | keyof _tamagui_web.WithPseudoProps<_tamagui_web.WithThemeValues<_tamagui_web.StackStyleBase> & _tamagui_web.WithShorthands<_tamagui_web.WithThemeValues<_tamagui_web.StackStyleBase>>> | "onError" | "onLoad" | "onLoadEnd" | "onLoadStart" | "progressiveRenderingEnabled" | "resizeMode" | "resizeMethod" | "source" | "src" | "srcSet" | "loadingIndicatorSource" | "defaultSource" | "alt" | "crossOrigin" | "tintColor" | "referrerPolicy" | "blurRadius" | "capInsets" | "onProgress" | "onPartialLoad" | "fadeDuration">, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
193
254
 
194
255
  type BadgeProps = {
195
256
  children: ReactNode;
196
257
  variant?: 'default' | 'success' | 'warning' | 'error' | 'info';
197
258
  };
198
- declare function Badge({ children, variant }: BadgeProps): react_jsx_runtime.JSX.Element;
259
+ declare function Badge({ children, variant }: BadgeProps): react.JSX.Element;
199
260
 
200
261
  declare const ICONS: {
201
262
  readonly home: "⌂";
@@ -250,7 +311,7 @@ type IconProps = {
250
311
  size?: number;
251
312
  color?: string;
252
313
  };
253
- declare function Icon({ name, size, color }: IconProps): react_jsx_runtime.JSX.Element;
314
+ declare function Icon({ name, size, color }: IconProps): react.JSX.Element;
254
315
 
255
316
  type BlinkAccordionItem = {
256
317
  id: string;
@@ -262,7 +323,7 @@ type BlinkAccordionProps = {
262
323
  defaultOpen?: string[];
263
324
  allowMultiple?: boolean;
264
325
  };
265
- declare function BlinkAccordion({ items, defaultOpen, allowMultiple }: BlinkAccordionProps): react_jsx_runtime.JSX.Element;
326
+ declare function BlinkAccordion({ items, defaultOpen, allowMultiple }: BlinkAccordionProps): react.JSX.Element;
266
327
 
267
328
  type BlinkTabItem = {
268
329
  key: string;
@@ -274,7 +335,7 @@ type BlinkTabsProps = {
274
335
  onTabChange?: (key: string) => void;
275
336
  variant?: 'underline' | 'pill';
276
337
  };
277
- declare function BlinkTabs({ tabs, activeTab, onTabChange, variant }: BlinkTabsProps): react_jsx_runtime.JSX.Element;
338
+ declare function BlinkTabs({ tabs, activeTab, onTabChange, variant }: BlinkTabsProps): react.JSX.Element;
278
339
 
279
340
  type BlinkToggleOption = {
280
341
  value: string;
@@ -286,7 +347,7 @@ type BlinkToggleGroupProps = {
286
347
  onValueChange: (value: string) => void;
287
348
  size?: 'sm' | 'md' | 'lg';
288
349
  };
289
- declare function BlinkToggleGroup({ options, value, onValueChange, size }: BlinkToggleGroupProps): react_jsx_runtime.JSX.Element;
350
+ declare function BlinkToggleGroup({ options, value, onValueChange, size }: BlinkToggleGroupProps): react.JSX.Element;
290
351
 
291
352
  type BlinkToastVariant = 'default' | 'success' | 'error' | 'warning';
292
353
  type BlinkToastData = {
@@ -307,7 +368,7 @@ type BlinkToastContextType = {
307
368
  declare const toast: (title: string, options?: BlinkToastOptions | BlinkToastVariant) => void;
308
369
  declare function BlinkToastProvider({ children }: {
309
370
  children: ReactNode;
310
- }): react_jsx_runtime.JSX.Element;
371
+ }): react.JSX.Element;
311
372
  declare function useBlinkToast(): BlinkToastContextType;
312
373
 
313
374
  type FormFieldProps = {
@@ -317,14 +378,29 @@ type FormFieldProps = {
317
378
  required?: boolean;
318
379
  children: ReactNode;
319
380
  };
320
- declare function FormField({ label, error, helperText, required, children }: FormFieldProps): react_jsx_runtime.JSX.Element;
381
+ declare function FormField({ label, error, helperText, required, children }: FormFieldProps): react.JSX.Element;
321
382
 
322
383
  type TooltipProps = {
323
384
  content: string;
324
385
  children: ReactNode;
325
386
  side?: 'top' | 'bottom' | 'left' | 'right';
326
387
  };
327
- declare function BlinkTooltip({ content, children, side }: TooltipProps): react_jsx_runtime.JSX.Element;
388
+ declare function BlinkTooltip({ content, children, side }: TooltipProps): react.JSX.Element;
389
+
390
+ declare function GoogleLogo({ size }: {
391
+ size?: number;
392
+ }): react.JSX.Element;
393
+ declare function AppleLogo({ size, color }: {
394
+ size?: number;
395
+ color?: string;
396
+ }): react.JSX.Element;
397
+ declare function GitHubLogo({ size, color }: {
398
+ size?: number;
399
+ color?: string;
400
+ }): react.JSX.Element;
401
+ declare function MicrosoftLogo({ size }: {
402
+ size?: number;
403
+ }): react.JSX.Element;
328
404
 
329
405
  type StepPageProps = {
330
406
  title: string;
@@ -332,9 +408,9 @@ type StepPageProps = {
332
408
  children: ReactNode;
333
409
  bottom?: ReactNode;
334
410
  };
335
- declare function StepPageLayout({ title, description, children, bottom }: StepPageProps): react_jsx_runtime.JSX.Element;
411
+ declare function StepPageLayout({ title, description, children, bottom }: StepPageProps): react.JSX.Element;
336
412
 
337
- declare const ScreenLayout: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
413
+ declare const ScreenLayout: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
338
414
  elevation?: number | tamagui.SizeTokens | undefined;
339
415
  inset?: number | tamagui.SizeTokens | {
340
416
  top?: number;
@@ -354,7 +430,7 @@ type SectionProps = {
354
430
  children: ReactNode;
355
431
  gap?: GetProps<typeof YStack>['gap'];
356
432
  };
357
- declare function Section({ title, description, children, gap }: SectionProps): react_jsx_runtime.JSX.Element;
433
+ declare function Section({ title, description, children, gap }: SectionProps): react.JSX.Element;
358
434
 
359
435
  type ListItemProps = {
360
436
  icon?: ReactNode;
@@ -363,24 +439,24 @@ type ListItemProps = {
363
439
  right?: ReactNode;
364
440
  onPress?: () => void;
365
441
  };
366
- declare function ListItem({ icon, title, subtitle, right, onPress }: ListItemProps): react_jsx_runtime.JSX.Element;
442
+ declare function ListItem({ icon, title, subtitle, right, onPress }: ListItemProps): react.JSX.Element;
367
443
 
368
444
  type DividerProps = {
369
445
  label?: string;
370
446
  };
371
- declare function Divider({ label }: DividerProps): react_jsx_runtime.JSX.Element;
447
+ declare function Divider({ label }: DividerProps): react.JSX.Element;
372
448
 
373
449
  type KeyboardStickyFooterProps = {
374
450
  children: ReactNode;
375
451
  offset?: number;
376
452
  };
377
- declare function KeyboardStickyFooter({ children, offset }: KeyboardStickyFooterProps): react_jsx_runtime.JSX.Element;
453
+ declare function KeyboardStickyFooter({ children, offset }: KeyboardStickyFooterProps): react.JSX.Element;
378
454
 
379
455
  type SafeAreaProps = {
380
456
  children: ReactNode;
381
457
  edges?: ('top' | 'bottom' | 'left' | 'right')[];
382
458
  };
383
- declare function SafeArea({ children, edges }: SafeAreaProps): react_jsx_runtime.JSX.Element;
459
+ declare function SafeArea({ children, edges }: SafeAreaProps): react.JSX.Element;
384
460
 
385
461
  type GridProps = {
386
462
  children: ReactNode;
@@ -393,43 +469,97 @@ type ContainerProps = {
393
469
  centered?: boolean;
394
470
  padding?: string;
395
471
  };
396
- declare function Grid({ children, columns, gap }: GridProps): react_jsx_runtime.JSX.Element;
397
- declare function Container({ children, maxWidth, centered, padding }: ContainerProps): react_jsx_runtime.JSX.Element;
472
+ declare function Grid({ children, columns, gap }: GridProps): react.JSX.Element;
473
+ declare function Container({ children, maxWidth, centered, padding }: ContainerProps): react.JSX.Element;
398
474
 
399
475
  type PlanOption = {
400
476
  id: string;
401
477
  name: string;
402
478
  price: string;
403
479
  period: string;
404
- features: string[];
480
+ tagline?: string;
481
+ pricePerWeek?: string;
482
+ savings?: string;
405
483
  popular?: boolean;
484
+ trial?: string;
485
+ features?: string[];
486
+ };
487
+ type PaywallVariant = 'default' | 'social-proof' | 'comparison' | 'creator-sheet' | 'immersive-dark';
488
+ type PaywallFeature = string | {
489
+ title: string;
490
+ description?: string;
491
+ icon?: ReactNode;
492
+ };
493
+ type PaywallComparisonRow = {
494
+ label: string;
495
+ free?: boolean;
496
+ premium?: boolean;
497
+ };
498
+ type PaywallTestimonial = {
499
+ quote: string;
500
+ author: string;
501
+ meta?: string;
502
+ };
503
+ type PaywallCreator = {
504
+ name: string;
505
+ meta?: string;
506
+ avatar?: ReactNode;
406
507
  };
407
508
  type PaywallScreenProps = {
509
+ variant?: PaywallVariant;
510
+ eyebrow?: string;
408
511
  title?: string;
409
512
  subtitle?: string;
513
+ features?: PaywallFeature[];
410
514
  plans: PlanOption[];
411
515
  selectedPlan?: string;
412
516
  onSelectPlan?: (planId: string) => void;
413
517
  onContinue?: () => void;
518
+ onClose?: () => void;
414
519
  onRestore?: () => void;
520
+ onTerms?: () => void;
521
+ onPrivacy?: () => void;
415
522
  continueLabel?: string;
523
+ reassurance?: string;
524
+ hero?: ReactNode;
525
+ socialProof?: string;
526
+ countdownMinutes?: number;
527
+ badge?: string;
528
+ comparisonRows?: PaywallComparisonRow[];
529
+ testimonials?: PaywallTestimonial[];
530
+ creator?: PaywallCreator;
531
+ topSlot?: ReactNode;
532
+ footerSlot?: ReactNode;
533
+ trustBadges?: {
534
+ icon?: ReactNode;
535
+ label: string;
536
+ }[];
416
537
  };
417
- declare function PaywallScreen({ title, subtitle, plans, selectedPlan, onSelectPlan, onContinue, onRestore, continueLabel, }: PaywallScreenProps): react_jsx_runtime.JSX.Element;
538
+ declare function PaywallScreen({ variant, eyebrow, title, subtitle, features, plans, selectedPlan, onSelectPlan, onContinue, onClose, onRestore, onTerms, onPrivacy, continueLabel, reassurance, hero, socialProof, countdownMinutes, badge, comparisonRows, testimonials, creator, topSlot, footerSlot, trustBadges, }: PaywallScreenProps): react.JSX.Element;
418
539
 
540
+ type OnboardingVariant = 'default' | 'calm-gradient' | 'card-tilt' | 'editorial' | 'selection-step' | 'permission-prompt';
419
541
  type OnboardingStep = {
420
542
  title: string;
421
543
  description: string;
422
544
  icon?: ReactNode;
545
+ hero?: ReactNode;
546
+ eyebrow?: string;
547
+ ctaLabel?: string;
548
+ background?: ReactNode;
423
549
  };
424
550
  type OnboardingCarouselProps = {
425
551
  steps: OnboardingStep[];
552
+ variant?: OnboardingVariant;
553
+ brand?: ReactNode;
554
+ topLeading?: ReactNode;
426
555
  onComplete?: () => void;
427
556
  onSkip?: () => void;
428
557
  completeLabel?: string;
429
558
  skipLabel?: string;
430
559
  nextLabel?: string;
560
+ footerSlot?: ReactNode;
431
561
  };
432
- declare function OnboardingCarousel({ steps, onComplete, onSkip, completeLabel, skipLabel, nextLabel, }: OnboardingCarouselProps): react_jsx_runtime.JSX.Element;
562
+ declare function OnboardingCarousel({ steps, variant, brand, topLeading, onComplete, onSkip, completeLabel, skipLabel, nextLabel, footerSlot, }: OnboardingCarouselProps): react.JSX.Element;
433
563
 
434
564
  type ChatMessage = {
435
565
  id: string;
@@ -443,7 +573,7 @@ type ChatBubbleProps = {
443
573
  message: ChatMessage;
444
574
  showAvatar?: boolean;
445
575
  };
446
- declare function ChatBubble({ message, showAvatar }: ChatBubbleProps): react_jsx_runtime.JSX.Element;
576
+ declare function ChatBubble({ message, showAvatar }: ChatBubbleProps): react.JSX.Element;
447
577
 
448
578
  type SettingsItem = {
449
579
  id: string;
@@ -464,7 +594,7 @@ type SettingsScreenProps = {
464
594
  sections: SettingsSection[];
465
595
  header?: ReactNode;
466
596
  };
467
- declare function SettingsScreen({ sections, header }: SettingsScreenProps): react_jsx_runtime.JSX.Element;
597
+ declare function SettingsScreen({ sections, header }: SettingsScreenProps): react.JSX.Element;
468
598
 
469
599
  type EmptyStateProps = {
470
600
  icon?: ReactNode;
@@ -473,7 +603,7 @@ type EmptyStateProps = {
473
603
  actionLabel?: string;
474
604
  onAction?: () => void;
475
605
  };
476
- declare function EmptyState({ icon, title, description, actionLabel, onAction }: EmptyStateProps): react_jsx_runtime.JSX.Element;
606
+ declare function EmptyState({ icon, title, description, actionLabel, onAction }: EmptyStateProps): react.JSX.Element;
477
607
 
478
608
  type ProfileHeaderProps = {
479
609
  name: string;
@@ -485,7 +615,7 @@ type ProfileHeaderProps = {
485
615
  }[];
486
616
  actions?: ReactNode;
487
617
  };
488
- declare function ProfileHeader({ name, subtitle, avatar, stats, actions }: ProfileHeaderProps): react_jsx_runtime.JSX.Element;
618
+ declare function ProfileHeader({ name, subtitle, avatar, stats, actions }: ProfileHeaderProps): react.JSX.Element;
489
619
 
490
620
  type AppHeaderVariant = 'simple' | 'back' | 'profile' | 'centered';
491
621
  type AppHeaderProps = {
@@ -499,7 +629,7 @@ type AppHeaderProps = {
499
629
  transparent?: boolean;
500
630
  borderless?: boolean;
501
631
  };
502
- declare function AppHeader({ title, subtitle, variant, onBack, avatar, left, right, transparent, borderless }: AppHeaderProps): react_jsx_runtime.JSX.Element;
632
+ declare function AppHeader({ title, subtitle, variant, onBack, avatar, left, right, transparent, borderless }: AppHeaderProps): react.JSX.Element;
503
633
 
504
634
  type BottomSheetProps = {
505
635
  open: boolean;
@@ -510,19 +640,29 @@ type BottomSheetProps = {
510
640
  dismissOnSnapToBottom?: boolean;
511
641
  showHandle?: boolean;
512
642
  showClose?: boolean;
643
+ zIndex?: number;
513
644
  };
514
- declare function BottomSheet({ open, onOpenChange, title, children, snapPoints, dismissOnSnapToBottom, showHandle, showClose }: BottomSheetProps): react_jsx_runtime.JSX.Element;
645
+ declare function BottomSheet({ open, onOpenChange, title, children, snapPoints, dismissOnSnapToBottom, showHandle, showClose, zIndex }: BottomSheetProps): react.JSX.Element;
515
646
 
647
+ type AuthProviderBrand = 'google' | 'apple' | 'github' | 'microsoft' | 'custom';
648
+ type LoginScreenVariant = 'default' | 'editorial' | 'centered-card';
516
649
  type AuthProvider = {
517
650
  id: string;
518
651
  name: string;
519
652
  icon?: ReactNode;
653
+ brand?: AuthProviderBrand;
654
+ description?: string;
520
655
  };
521
656
  type LoginScreenProps = {
657
+ variant?: LoginScreenVariant;
522
658
  title?: string;
523
659
  subtitle?: string;
524
660
  logo?: ReactNode;
525
661
  providers?: AuthProvider[];
662
+ hero?: ReactNode;
663
+ backgroundSlot?: ReactNode;
664
+ footerSlot?: ReactNode;
665
+ providerButtonStyle?: 'neutral' | 'brand';
526
666
  onProviderPress?: (id: string) => void;
527
667
  showEmailForm?: boolean;
528
668
  onEmailSubmit?: (email: string, password: string) => void;
@@ -532,7 +672,7 @@ type LoginScreenProps = {
532
672
  onPrivacy?: () => void;
533
673
  loading?: boolean;
534
674
  };
535
- declare function LoginScreen({ title, subtitle, logo, providers, onProviderPress, showEmailForm, onEmailSubmit, onForgotPassword, onCreateAccount, onTerms, onPrivacy, loading }: LoginScreenProps): react_jsx_runtime.JSX.Element;
675
+ declare function LoginScreen({ variant, title, subtitle, logo, providers, hero, backgroundSlot, footerSlot, providerButtonStyle, onProviderPress, showEmailForm, onEmailSubmit, onForgotPassword, onCreateAccount, onTerms, onPrivacy, loading, }: LoginScreenProps): react.JSX.Element;
536
676
 
537
677
  type TabBarItem = {
538
678
  id: string;
@@ -545,7 +685,7 @@ type TabBarProps = {
545
685
  onTabPress: (id: string) => void;
546
686
  showLabels?: boolean;
547
687
  };
548
- declare function TabBar({ tabs, activeTab, onTabPress, showLabels }: TabBarProps): react_jsx_runtime.JSX.Element;
688
+ declare function TabBar({ tabs, activeTab, onTabPress, showLabels }: TabBarProps): react.JSX.Element;
549
689
 
550
690
  type SearchBarProps = {
551
691
  value: string;
@@ -555,7 +695,7 @@ type SearchBarProps = {
555
695
  onCancel?: () => void;
556
696
  autoFocus?: boolean;
557
697
  };
558
- declare function SearchBar({ value, onChangeText, placeholder, onFilter, onCancel, autoFocus }: SearchBarProps): react_jsx_runtime.JSX.Element;
698
+ declare function SearchBar({ value, onChangeText, placeholder, onFilter, onCancel, autoFocus }: SearchBarProps): react.JSX.Element;
559
699
 
560
700
  type FABProps = {
561
701
  icon?: ReactNode;
@@ -564,7 +704,7 @@ type FABProps = {
564
704
  position?: 'bottom-right' | 'bottom-center' | 'bottom-left';
565
705
  size?: 'sm' | 'md' | 'lg';
566
706
  };
567
- declare function FloatingActionButton({ icon, label, onPress, position, size }: FABProps): react_jsx_runtime.JSX.Element;
707
+ declare function FloatingActionButton({ icon, label, onPress, position, size }: FABProps): react.JSX.Element;
568
708
 
569
709
  type ActionSheetItem = {
570
710
  id: string;
@@ -579,8 +719,9 @@ type ActionSheetProps = {
579
719
  items: ActionSheetItem[];
580
720
  onSelect: (id: string) => void;
581
721
  cancelLabel?: string;
722
+ zIndex?: number;
582
723
  };
583
- declare function ActionSheet({ open, onOpenChange, title, items, onSelect, cancelLabel }: ActionSheetProps): react_jsx_runtime.JSX.Element;
724
+ declare function ActionSheet({ open, onOpenChange, title, items, onSelect, cancelLabel, zIndex }: ActionSheetProps): react.JSX.Element;
584
725
 
585
726
  type SkeletonProps = {
586
727
  width?: number | string;
@@ -588,7 +729,7 @@ type SkeletonProps = {
588
729
  borderRadius?: number;
589
730
  variant?: 'text' | 'circular' | 'rectangular';
590
731
  };
591
- declare function Skeleton({ width, height, borderRadius, variant }: SkeletonProps): react_jsx_runtime.JSX.Element;
732
+ declare function Skeleton({ width, height, borderRadius, variant }: SkeletonProps): react.JSX.Element;
592
733
 
593
734
  type NotificationBannerProps = {
594
735
  title: string;
@@ -598,14 +739,14 @@ type NotificationBannerProps = {
598
739
  onDismiss?: () => void;
599
740
  icon?: ReactNode;
600
741
  };
601
- declare function NotificationBanner({ title, message, variant, onPress, onDismiss, icon }: NotificationBannerProps): react_jsx_runtime.JSX.Element;
742
+ declare function NotificationBanner({ title, message, variant, onPress, onDismiss, icon }: NotificationBannerProps): react.JSX.Element;
602
743
 
603
744
  type ProgressStepsProps = {
604
745
  steps: string[];
605
746
  currentStep: number;
606
747
  variant?: 'dots' | 'bar' | 'numbered';
607
748
  };
608
- declare function ProgressSteps({ steps, currentStep, variant }: ProgressStepsProps): react_jsx_runtime.JSX.Element;
749
+ declare function ProgressSteps({ steps, currentStep, variant }: ProgressStepsProps): react.JSX.Element;
609
750
 
610
751
  type SwipeAction = {
611
752
  id: string;
@@ -618,7 +759,7 @@ type SwipeableRowProps = {
618
759
  leftActions?: SwipeAction[];
619
760
  rightActions?: SwipeAction[];
620
761
  };
621
- declare function SwipeableRow({ children, leftActions, rightActions }: SwipeableRowProps): react_jsx_runtime.JSX.Element;
762
+ declare function SwipeableRow({ children, leftActions, rightActions }: SwipeableRowProps): react.JSX.Element;
622
763
 
623
764
  type MediaCardProps = {
624
765
  image: string;
@@ -629,7 +770,7 @@ type MediaCardProps = {
629
770
  onPress?: () => void;
630
771
  badge?: string;
631
772
  };
632
- declare function MediaCard({ image, title, subtitle, overlay, aspectRatio, onPress, badge }: MediaCardProps): react_jsx_runtime.JSX.Element;
773
+ declare function MediaCard({ image, title, subtitle, overlay, aspectRatio, onPress, badge }: MediaCardProps): react.JSX.Element;
633
774
 
634
775
  type CarouselProps = {
635
776
  children: ReactNode;
@@ -637,13 +778,356 @@ type CarouselProps = {
637
778
  snapToInterval?: number;
638
779
  showIndicators?: boolean;
639
780
  };
640
- declare function Carousel({ children, gap, snapToInterval, showIndicators }: CarouselProps): react_jsx_runtime.JSX.Element;
781
+ declare function Carousel({ children, gap, snapToInterval, showIndicators }: CarouselProps): react.JSX.Element;
641
782
 
642
783
  type PullToRefreshProps = {
643
784
  children: ReactNode;
644
785
  onRefresh: () => void;
645
786
  refreshing?: boolean;
646
787
  };
647
- declare function PullToRefresh({ children, onRefresh, refreshing }: PullToRefreshProps): react_jsx_runtime.JSX.Element;
788
+ declare function PullToRefresh({ children, onRefresh, refreshing }: PullToRefreshProps): react.JSX.Element;
789
+
790
+ type ProductCardProps = {
791
+ image: string;
792
+ title: string;
793
+ price: string;
794
+ originalPrice?: string;
795
+ rating?: number;
796
+ reviewCount?: number;
797
+ badge?: string;
798
+ onPress?: () => void;
799
+ onAddToCart?: () => void;
800
+ variant?: 'vertical' | 'horizontal';
801
+ };
802
+ declare function ProductCard({ image, title, price, originalPrice, rating, reviewCount, badge, onPress, onAddToCart, variant }: ProductCardProps): react.JSX.Element;
803
+
804
+ type PricingPlan = {
805
+ id: string;
806
+ name: string;
807
+ price: string;
808
+ period?: string;
809
+ description?: string;
810
+ features: {
811
+ label: string;
812
+ included: boolean;
813
+ }[];
814
+ popular?: boolean;
815
+ cta?: string;
816
+ trial?: string;
817
+ };
818
+ type PricingTableProps = {
819
+ plans: PricingPlan[];
820
+ selectedPlan?: string;
821
+ onSelectPlan?: (planId: string) => void;
822
+ annual?: boolean;
823
+ onToggleBilling?: (annual: boolean) => void;
824
+ onContinue?: () => void;
825
+ continueLabel?: string;
826
+ reassurance?: string;
827
+ };
828
+ declare function PricingTable({ plans, selectedPlan, onSelectPlan, annual, onToggleBilling, onContinue, continueLabel, reassurance }: PricingTableProps): react.JSX.Element;
829
+
830
+ type CountdownBannerProps = {
831
+ endTime?: Date;
832
+ minutes?: number;
833
+ label?: string;
834
+ onExpire?: () => void;
835
+ variant?: 'banner' | 'compact' | 'badge';
836
+ };
837
+ declare function CountdownBanner({ endTime, minutes, label, onExpire, variant }: CountdownBannerProps): react.JSX.Element | null;
838
+
839
+ type TestimonialCardProps = {
840
+ quote: string;
841
+ author: string;
842
+ role?: string;
843
+ avatar?: string;
844
+ rating?: number;
845
+ variant?: 'card' | 'minimal' | 'featured';
846
+ };
847
+ declare function TestimonialCard({ quote, author, role, avatar, rating, variant }: TestimonialCardProps): react.JSX.Element;
848
+
849
+ type ConfirmDialogProps = {
850
+ open: boolean;
851
+ onOpenChange: (open: boolean) => void;
852
+ title: string;
853
+ description?: string;
854
+ confirmLabel?: string;
855
+ cancelLabel?: string;
856
+ onConfirm?: () => void;
857
+ onCancel?: () => void;
858
+ destructive?: boolean;
859
+ icon?: ReactNode;
860
+ };
861
+ declare function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel, cancelLabel, onConfirm, onCancel, destructive, icon, }: ConfirmDialogProps): react.JSX.Element;
862
+
863
+ type ChipProps = {
864
+ label: string;
865
+ selected?: boolean;
866
+ onPress?: () => void;
867
+ onRemove?: () => void;
868
+ variant?: 'filled' | 'outlined';
869
+ size?: 'sm' | 'md' | 'lg';
870
+ icon?: ReactNode;
871
+ color?: string;
872
+ };
873
+ type ChipGroupProps = {
874
+ chips: {
875
+ id: string;
876
+ label: string;
877
+ icon?: ReactNode;
878
+ }[];
879
+ selected?: string[];
880
+ onSelectionChange?: (selected: string[]) => void;
881
+ multiSelect?: boolean;
882
+ variant?: 'filled' | 'outlined';
883
+ size?: 'sm' | 'md' | 'lg';
884
+ };
885
+ declare function Chip({ label, selected, onPress, onRemove, variant, size, icon, color }: ChipProps): react.JSX.Element;
886
+ declare function ChipGroup({ chips, selected, onSelectionChange, multiSelect, variant, size }: ChipGroupProps): react.JSX.Element;
887
+
888
+ type OTPInputProps = {
889
+ length?: number;
890
+ value?: string;
891
+ onChange?: (value: string) => void;
892
+ onComplete?: (code: string) => void;
893
+ error?: boolean;
894
+ autoFocus?: boolean;
895
+ secureEntry?: boolean;
896
+ };
897
+ declare function OTPInput({ length, value, onChange, onComplete, error, autoFocus, secureEntry }: OTPInputProps): react.JSX.Element;
898
+
899
+ type PasswordInputProps = {
900
+ value?: string;
901
+ onChangeText?: (value: string) => void;
902
+ placeholder?: string;
903
+ label?: string;
904
+ error?: string;
905
+ size?: '$3' | '$4' | '$5';
906
+ strengthIndicator?: boolean;
907
+ };
908
+ declare function PasswordInput({ value, onChangeText, placeholder, label, error, size, strengthIndicator }: PasswordInputProps): react.JSX.Element;
909
+
910
+ type AvatarGroupProps = {
911
+ avatars: {
912
+ uri?: string;
913
+ name?: string;
914
+ color?: string;
915
+ }[];
916
+ max?: number;
917
+ size?: number;
918
+ overlap?: number;
919
+ };
920
+ declare function AvatarGroup({ avatars, max, size, overlap }: AvatarGroupProps): react.JSX.Element;
921
+
922
+ type SwipeCardItem = {
923
+ id: string;
924
+ [key: string]: any;
925
+ };
926
+ type SwipeCardsProps<T extends SwipeCardItem> = {
927
+ items: T[];
928
+ renderCard: (item: T) => ReactNode;
929
+ onSwipeLeft?: (item: T) => void;
930
+ onSwipeRight?: (item: T) => void;
931
+ onEmpty?: () => void;
932
+ leftLabel?: string;
933
+ rightLabel?: string;
934
+ emptyMessage?: string;
935
+ };
936
+ declare function SwipeCards<T extends SwipeCardItem>({ items, renderCard, onSwipeLeft, onSwipeRight, onEmpty, leftLabel, rightLabel, emptyMessage, }: SwipeCardsProps<T>): react.JSX.Element;
937
+
938
+ type GlassCardProps = {
939
+ children: ReactNode;
940
+ intensity?: 'light' | 'medium' | 'heavy';
941
+ tint?: 'light' | 'dark';
942
+ borderRadius?: number | string;
943
+ padding?: number | string;
944
+ elevated?: boolean;
945
+ };
946
+ declare function GlassCard({ children, intensity, tint, borderRadius, padding, elevated, }: GlassCardProps): react.JSX.Element;
947
+
948
+ type DataTableColumn<T> = {
949
+ key: string;
950
+ header: string;
951
+ render?: (value: any, row: T) => ReactNode;
952
+ sortable?: boolean;
953
+ width?: number | string;
954
+ };
955
+ type DataTableProps<T extends Record<string, any>> = {
956
+ columns: DataTableColumn<T>[];
957
+ data: T[];
958
+ onRowPress?: (row: T) => void;
959
+ emptyMessage?: string;
960
+ };
961
+ declare function StatusBadge({ status }: {
962
+ status: string;
963
+ }): react.JSX.Element;
964
+ declare function DataTable<T extends Record<string, any>>({ columns, data, onRowPress, emptyMessage }: DataTableProps<T>): react.JSX.Element;
965
+
966
+ type DatePickerProps = {
967
+ value?: Date;
968
+ onDateChange?: (date: Date) => void;
969
+ minDate?: Date;
970
+ maxDate?: Date;
971
+ startDay?: 0 | 1;
972
+ placeholder?: string;
973
+ };
974
+ declare function DatePicker({ value, onDateChange, minDate, maxDate, startDay }: DatePickerProps): react.JSX.Element;
975
+
976
+ type EventCardProps = {
977
+ title: string;
978
+ subtitle?: string;
979
+ time?: string;
980
+ location?: string;
981
+ label?: string;
982
+ participants?: number;
983
+ maxParticipants?: number;
984
+ theme?: 'purple' | 'green' | 'blue' | 'orange' | 'red' | 'pink';
985
+ onPress?: () => void;
986
+ actions?: ReactNode;
987
+ };
988
+ declare function EventCard({ theme, ...props }: EventCardProps): react.JSX.Element;
989
+
990
+ type PreferenceItem = {
991
+ type: 'toggle';
992
+ id: string;
993
+ title: string;
994
+ description?: string;
995
+ value: boolean;
996
+ onValueChange: (v: boolean) => void;
997
+ } | {
998
+ type: 'select';
999
+ id: string;
1000
+ title: string;
1001
+ description?: string;
1002
+ value: string;
1003
+ options: {
1004
+ label: string;
1005
+ value: string;
1006
+ }[];
1007
+ onValueChange: (v: string) => void;
1008
+ } | {
1009
+ type: 'slider';
1010
+ id: string;
1011
+ title: string;
1012
+ description?: string;
1013
+ value: number;
1014
+ min?: number;
1015
+ max?: number;
1016
+ onValueChange: (v: number) => void;
1017
+ } | {
1018
+ type: 'action';
1019
+ id: string;
1020
+ title: string;
1021
+ description?: string;
1022
+ onPress: () => void;
1023
+ destructive?: boolean;
1024
+ };
1025
+ type PreferenceSection = {
1026
+ title: string;
1027
+ description?: string;
1028
+ items: PreferenceItem[];
1029
+ };
1030
+ type UserPreferencesProps = {
1031
+ sections: PreferenceSection[];
1032
+ };
1033
+ declare function UserPreferences({ sections }: UserPreferencesProps): react.JSX.Element;
1034
+
1035
+ type BlinkSelectItem = {
1036
+ label: string;
1037
+ value: string;
1038
+ };
1039
+ type BlinkSelectProps = {
1040
+ items: BlinkSelectItem[];
1041
+ value?: string;
1042
+ onValueChange?: (value: string) => void;
1043
+ placeholder?: string;
1044
+ label?: string;
1045
+ size?: GetProps<typeof Select.Trigger>['size'];
1046
+ disabled?: boolean;
1047
+ width?: string | number;
1048
+ };
1049
+ declare function BlinkSelect({ items, value, onValueChange, placeholder, label, size, disabled, width, }: BlinkSelectProps): react__default.JSX.Element;
1050
+
1051
+ type BlinkDialogProps = {
1052
+ open?: boolean;
1053
+ onOpenChange?: (open: boolean) => void;
1054
+ trigger?: react__default.ReactNode;
1055
+ title?: string;
1056
+ description?: string;
1057
+ children?: react__default.ReactNode;
1058
+ confirmLabel?: string;
1059
+ cancelLabel?: string;
1060
+ onConfirm?: () => void;
1061
+ onCancel?: () => void;
1062
+ confirmTheme?: GetProps<typeof Button$1>['theme'];
1063
+ };
1064
+ declare function BlinkDialog({ open, onOpenChange, trigger, title, description, children, confirmLabel, cancelLabel, onConfirm, onCancel, confirmTheme, }: BlinkDialogProps): react__default.JSX.Element;
1065
+
1066
+ type BlinkPopoverProps = {
1067
+ trigger: react__default.ReactNode;
1068
+ children: react__default.ReactNode;
1069
+ placement?: 'top' | 'bottom' | 'left' | 'right';
1070
+ allowFlip?: boolean;
1071
+ size?: string;
1072
+ };
1073
+ declare function BlinkPopover({ trigger, children, placement, allowFlip, size, }: BlinkPopoverProps): react__default.JSX.Element;
1074
+
1075
+ type ImmersiveMediaAction = {
1076
+ id: string;
1077
+ label?: string;
1078
+ value?: string;
1079
+ icon?: ReactNode;
1080
+ onPress?: () => void;
1081
+ };
1082
+ type ImmersiveMediaScreenProps = {
1083
+ variant?: 'story' | 'reel' | 'sheet';
1084
+ media: ReactNode;
1085
+ title?: string;
1086
+ subtitle?: string;
1087
+ topLeft?: ReactNode;
1088
+ topCenter?: ReactNode;
1089
+ topRight?: ReactNode;
1090
+ actions?: ImmersiveMediaAction[];
1091
+ bottomMeta?: ReactNode;
1092
+ inputPlaceholder?: string;
1093
+ onInputPress?: () => void;
1094
+ sheetContent?: ReactNode;
1095
+ };
1096
+ declare function ImmersiveMediaScreen({ variant, media, title, subtitle, topLeft, topCenter, topRight, actions, bottomMeta, inputPlaceholder, onInputPress, sheetContent, }: ImmersiveMediaScreenProps): react.JSX.Element;
1097
+
1098
+ type FinanceMetric = {
1099
+ label: string;
1100
+ value: string;
1101
+ change?: string;
1102
+ };
1103
+ type FinanceQuickAction = {
1104
+ id: string;
1105
+ label: string;
1106
+ icon?: ReactNode;
1107
+ onPress?: () => void;
1108
+ };
1109
+ type FinanceDashboardSection = {
1110
+ id?: string;
1111
+ title: string;
1112
+ rows: Array<{
1113
+ id: string;
1114
+ title: string;
1115
+ subtitle?: string;
1116
+ value?: string;
1117
+ leading?: ReactNode;
1118
+ }>;
1119
+ };
1120
+ type FinanceDashboardProps = {
1121
+ title?: string;
1122
+ balanceLabel?: string;
1123
+ balance: string;
1124
+ rangeLabel?: string;
1125
+ metrics?: FinanceMetric[];
1126
+ quickActions?: FinanceQuickAction[];
1127
+ sections?: FinanceDashboardSection[];
1128
+ chartSlot?: ReactNode;
1129
+ topRight?: ReactNode;
1130
+ };
1131
+ declare function FinanceDashboard({ title, balanceLabel, balance, rangeLabel, metrics, quickActions, sections, chartSlot, topRight, }: FinanceDashboardProps): react.JSX.Element;
648
1132
 
649
- export { ActionSheet, type ActionSheetItem, type ActionSheetProps, AppHeader, type AppHeaderProps, type AppHeaderVariant, type AuthProvider, Badge, type BadgeProps, BlinkAccordion, type BlinkAccordionItem, type BlinkAccordionProps, Avatar as BlinkAvatar, type AvatarProps as BlinkAvatarProps, Button as BlinkButton, type ButtonProps as BlinkButtonProps, Card as BlinkCard, type CardProps as BlinkCardProps, type BlinkConfig, Input as BlinkInput, type InputProps as BlinkInputProps, type BlinkTabItem, BlinkTabs, type BlinkTabsProps, BlinkText, type BlinkTextProps, type BlinkToastContextType, type BlinkToastData, type BlinkToastOptions, BlinkToastProvider, type BlinkToastVariant, BlinkToggleGroup, type BlinkToggleGroupProps, type BlinkToggleOption, BlinkTooltip, BottomSheet, type BottomSheetProps, Carousel, type CarouselProps, ChatBubble, type ChatBubbleProps, type ChatMessage, Container, type ContainerProps, DialogProvider, Divider, type DividerProps, EmptyState, type EmptyStateProps, type FABProps, FloatingActionButton, FormField, type FormFieldProps, Grid, type GridProps, ICONS, Icon, type IconName, type IconProps, Image, KeyboardStickyFooter, type KeyboardStickyFooterProps, ListItem, type ListItemProps, LoginScreen, type LoginScreenProps, MediaCard, type MediaCardProps, NotificationBanner, type NotificationBannerProps, OnboardingCarousel, type OnboardingCarouselProps, type OnboardingStep, PageContainer, PageMainContainer, PaywallScreen, type PaywallScreenProps, type PlanOption, Pressable, ProfileHeader, type ProfileHeaderProps, ProgressSteps, type ProgressStepsProps, PullToRefresh, type PullToRefreshProps, SafeArea, type SafeAreaProps, ScreenLayout, SearchBar, type SearchBarProps, Section, type SectionProps, SepHeading, type SettingsItem, SettingsScreen, type SettingsScreenProps, type SettingsSection, Skeleton, type SkeletonProps, StepPageLayout, type StepPageProps, SubHeading, type SwipeAction, SwipeableRow, type SwipeableRowProps, TabBar, type TabBarItem, type TabBarProps, type TooltipProps, blinkConfig, dialogConfirm, showError, toast, useBlinkToast };
1133
+ export { ActionSheet, type ActionSheetItem, type ActionSheetProps, AppHeader, type AppHeaderProps, type AppHeaderVariant, AppleLogo, type AuthProvider, type AuthProviderBrand, AvatarGroup, type AvatarGroupProps, BLINK_DESIGN_THEMES, BLINK_DESIGN_THEME_IDS, Badge, type BadgeProps, BlinkAccordion, type BlinkAccordionItem, type BlinkAccordionProps, Avatar as BlinkAvatar, type AvatarProps as BlinkAvatarProps, Button as BlinkButton, type ButtonProps as BlinkButtonProps, Card as BlinkCard, type CardProps as BlinkCardProps, type BlinkColorPalette, type BlinkConfig, type BlinkDesignTheme, type BlinkDesignThemeId, BlinkDialog, type BlinkDialogProps, Input as BlinkInput, type InputProps as BlinkInputProps, BlinkPopover, type BlinkPopoverProps, BlinkSelect, type BlinkSelectItem, type BlinkSelectProps, type BlinkTabItem, BlinkTabs, type BlinkTabsProps, BlinkText, type BlinkTextProps, type BlinkToastContextType, type BlinkToastData, type BlinkToastOptions, BlinkToastProvider, type BlinkToastVariant, BlinkToggleGroup, type BlinkToggleGroupProps, type BlinkToggleOption, BlinkTooltip, BottomSheet, type BottomSheetProps, Carousel, type CarouselProps, ChatBubble, type ChatBubbleProps, type ChatMessage, Chip, ChipGroup, type ChipGroupProps, type ChipProps, ConfirmDialog, type ConfirmDialogProps, Container, type ContainerProps, CountdownBanner, type CountdownBannerProps, DataTable, type DataTableColumn, type DataTableProps, DatePicker, type DatePickerProps, DialogProvider, Divider, type DividerProps, EmptyState, type EmptyStateProps, EventCard, type EventCardProps, type FABProps, FinanceDashboard, type FinanceDashboardProps, type FinanceDashboardSection, type FinanceMetric, type FinanceQuickAction, FloatingActionButton, FormField, type FormFieldProps, GitHubLogo, GlassCard, type GlassCardProps, GoogleLogo, Grid, type GridProps, ICONS, Icon, type IconName, type IconProps, Image, type ImmersiveMediaAction, ImmersiveMediaScreen, type ImmersiveMediaScreenProps, KeyboardStickyFooter, type KeyboardStickyFooterProps, ListItem, type ListItemProps, LoginScreen, type LoginScreenProps, type LoginScreenVariant, MediaCard, type MediaCardProps, MicrosoftLogo, NotificationBanner, type NotificationBannerProps, OTPInput, type OTPInputProps, OnboardingCarousel, type OnboardingCarouselProps, type OnboardingStep, type OnboardingVariant, PageContainer, PageMainContainer, PasswordInput, type PasswordInputProps, type PaywallComparisonRow, type PaywallCreator, type PaywallFeature, PaywallScreen, type PaywallScreenProps, type PaywallTestimonial, type PaywallVariant, type PlanOption, type PreferenceItem, type PreferenceSection, Pressable, type PricingPlan, PricingTable, type PricingTableProps, ProductCard, type ProductCardProps, ProfileHeader, type ProfileHeaderProps, ProgressSteps, type ProgressStepsProps, PullToRefresh, type PullToRefreshProps, SafeArea, type SafeAreaProps, ScreenLayout, SearchBar, type SearchBarProps, Section, type SectionProps, SepHeading, type SettingsItem, SettingsScreen, type SettingsScreenProps, type SettingsSection, Skeleton, type SkeletonProps, StatusBadge, StepPageLayout, type StepPageProps, SubHeading, type SwipeAction, type SwipeCardItem, SwipeCards, type SwipeCardsProps, SwipeableRow, type SwipeableRowProps, TabBar, type TabBarItem, type TabBarProps, TestimonialCard, type TestimonialCardProps, type TooltipProps, UserPreferences, type UserPreferencesProps, blinkConfig, dialogConfirm, getBlinkDesignTheme, getBlinkThemePalettes, showError, toast, useBlinkToast };