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

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.mts CHANGED
@@ -1,12 +1,12 @@
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
- import * as react from 'react';
6
- import { ReactNode } from 'react';
7
5
  import * as _tamagui_core from '@tamagui/core';
8
- import * as _tamagui_web from '@tamagui/web';
9
- import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import * as React$1 from 'react';
7
+ import React__default, { ReactNode } from 'react';
8
+ import * as react_native from 'react-native';
9
+ export * from '@tamagui/lucide-icons';
10
10
 
11
11
  declare const blinkConfig: TamaguiInternalConfig;
12
12
  type BlinkConfig = typeof blinkConfig;
@@ -15,39 +15,87 @@ declare module 'tamagui' {
15
15
  }
16
16
  }
17
17
 
18
- declare const Button: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps & tamagui.TextContextStyles & {
18
+ /**
19
+ * Maps the 16 Blink platform design themes (from auto-engineer src/types/color-theme.ts)
20
+ * to Tamagui-compatible theme palettes via createThemes.
21
+ *
22
+ * Usage:
23
+ * import { createBlinkThemes, BLINK_DESIGN_THEMES } from '@blinkdotnew/mobile-ui'
24
+ * const themes = createBlinkThemes('ocean-teal')
25
+ * const config = createTamagui({ ...tamaguiDefaultConfig, themes })
26
+ */
27
+ 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';
28
+ interface BlinkColorPalette {
29
+ primary: string;
30
+ primary_foreground: string;
31
+ secondary: string;
32
+ secondary_foreground: string;
33
+ accent: string;
34
+ background: string;
35
+ dark_mode: string;
36
+ }
37
+ interface BlinkDesignTheme {
38
+ id: BlinkDesignThemeId;
39
+ name: string;
40
+ description: string;
41
+ palette: BlinkColorPalette;
42
+ }
43
+ declare const BLINK_DESIGN_THEMES: Record<BlinkDesignThemeId, BlinkDesignTheme>;
44
+ /**
45
+ * Generates Tamagui-compatible theme config for createThemes from a platform design theme.
46
+ *
47
+ * Usage with createThemes:
48
+ * ```ts
49
+ * import { createThemes } from '@tamagui/theme-builder'
50
+ * import { getBlinkThemePalettes } from '@blinkdotnew/mobile-ui'
51
+ *
52
+ * const palettes = getBlinkThemePalettes('ocean-teal')
53
+ * const themes = createThemes({
54
+ * base: { palette: palettes.base },
55
+ * accent: { palette: palettes.accent },
56
+ * })
57
+ * ```
58
+ */
59
+ declare function getBlinkThemePalettes(themeId: BlinkDesignThemeId): {
60
+ base: {
61
+ light: string[];
62
+ dark: string[];
63
+ };
64
+ accent: {
65
+ light: string[];
66
+ dark: string[];
67
+ };
68
+ };
69
+ /**
70
+ * All available design theme IDs for enumeration.
71
+ */
72
+ declare const BLINK_DESIGN_THEME_IDS: BlinkDesignThemeId[];
73
+ /**
74
+ * Get theme metadata (name, description) for UI pickers.
75
+ */
76
+ declare function getBlinkDesignTheme(themeId: BlinkDesignThemeId): BlinkDesignTheme | undefined;
77
+
78
+ declare const Button: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps & tamagui.TextContextStyles & {
19
79
  textProps?: Partial<tamagui.SizableTextProps>;
20
80
  noTextWrap?: boolean;
21
- } & _tamagui_web.ThemeableProps & {
22
- icon?: react.JSX.Element | react.FunctionComponent<{
23
- color?: any;
24
- size?: any;
25
- }> | ((props: {
26
- color?: any;
27
- size?: any;
28
- }) => any) | null;
29
- iconAfter?: react.JSX.Element | react.FunctionComponent<{
30
- color?: any;
31
- size?: any;
32
- }> | ((props: {
33
- color?: any;
34
- size?: any;
35
- }) => any) | null;
81
+ } & _tamagui_core.ThemeableProps & {
82
+ icon?: any;
83
+ iconAfter?: any;
36
84
  scaleIcon?: number;
37
85
  spaceFlex?: number | boolean;
38
86
  scaleSpace?: number;
39
87
  unstyled?: boolean;
40
- }, _tamagui_web.StackStyleBase, {
88
+ }, _tamagui_core.StackStyleBase, {
41
89
  size?: number | "lg" | "md" | "sm" | tamagui.SizeTokens | undefined;
42
90
  disabled?: boolean | undefined;
43
91
  elevation?: number | tamagui.SizeTokens | undefined;
44
- variant?: "transparent" | "default" | "primary" | "outlined" | "floating" | "destructive" | undefined;
45
92
  inset?: number | tamagui.SizeTokens | {
46
93
  top?: number;
47
94
  bottom?: number;
48
95
  left?: number;
49
96
  right?: number;
50
97
  } | null | undefined;
98
+ variant?: "transparent" | "default" | "primary" | "outlined" | "floating" | "destructive" | undefined;
51
99
  unstyled?: boolean | undefined;
52
100
  transparent?: boolean | undefined;
53
101
  fullscreen?: boolean | undefined;
@@ -62,10 +110,10 @@ declare const Button: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tam
62
110
  padded?: boolean | undefined;
63
111
  chromeless?: boolean | "all" | undefined;
64
112
  fullWidth?: boolean | undefined;
65
- }, _tamagui_web.StaticConfigPublic>;
113
+ }, _tamagui_core.StaticConfigPublic>;
66
114
  type ButtonProps = GetProps<typeof Button>;
67
115
 
68
- declare const BlinkText: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, tamagui.TextNonStyleProps, _tamagui_web.TextStylePropsBase, {
116
+ declare const BlinkText: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiTextElement, tamagui.TextNonStyleProps, _tamagui_core.TextStylePropsBase, {
69
117
  size?: tamagui.FontSizeTokens | undefined;
70
118
  bold?: boolean | undefined;
71
119
  variant?: "body" | "display" | "h1" | "h2" | "h3" | "h4" | "bodySmall" | "caption" | "small" | undefined;
@@ -73,46 +121,46 @@ declare const BlinkText: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, t
73
121
  center?: boolean | undefined;
74
122
  muted?: boolean | undefined;
75
123
  secondary?: boolean | undefined;
76
- }, _tamagui_web.StaticConfigPublic>;
124
+ }, _tamagui_core.StaticConfigPublic>;
77
125
  type BlinkTextProps = GetProps<typeof BlinkText>;
78
126
 
79
- declare const CardFrame: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
127
+ declare const CardFrame: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_core.StackStyleBase, {
80
128
  size?: "lg" | "md" | "sm" | undefined;
81
129
  variant?: "outlined" | "flat" | "elevated" | undefined;
82
130
  pressable?: boolean | undefined;
83
- }, _tamagui_web.StaticConfigPublic>;
131
+ }, _tamagui_core.StaticConfigPublic>;
84
132
  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> & {
133
+ declare const Card: React$1.ForwardRefExoticComponent<Omit<_tamagui_core.RNTamaguiViewNonStyleProps, "size" | keyof _tamagui_core.StackStyleBase | "variant" | "pressable"> & _tamagui_core.WithThemeValues<_tamagui_core.StackStyleBase> & {
86
134
  size?: "lg" | "md" | "sm" | undefined;
87
135
  variant?: "outlined" | "flat" | "elevated" | undefined;
88
136
  pressable?: boolean | undefined;
89
- } & _tamagui_web.WithShorthands<_tamagui_web.WithThemeValues<_tamagui_web.StackStyleBase>> & _tamagui_web.WithPseudoProps<_tamagui_web.WithThemeValues<_tamagui_web.StackStyleBase> & {
137
+ } & _tamagui_core.WithShorthands<_tamagui_core.WithThemeValues<_tamagui_core.StackStyleBase>> & _tamagui_core.WithPseudoProps<_tamagui_core.WithThemeValues<_tamagui_core.StackStyleBase> & {
90
138
  size?: "lg" | "md" | "sm" | undefined;
91
139
  variant?: "outlined" | "flat" | "elevated" | undefined;
92
140
  pressable?: boolean | undefined;
93
- } & _tamagui_web.WithShorthands<_tamagui_web.WithThemeValues<_tamagui_web.StackStyleBase>>> & _tamagui_web.WithMediaProps<_tamagui_web.WithThemeShorthandsAndPseudos<_tamagui_web.StackStyleBase, {
141
+ } & _tamagui_core.WithShorthands<_tamagui_core.WithThemeValues<_tamagui_core.StackStyleBase>>> & _tamagui_core.WithMediaProps<_tamagui_core.WithThemeShorthandsAndPseudos<_tamagui_core.StackStyleBase, {
94
142
  size?: "lg" | "md" | "sm" | undefined;
95
143
  variant?: "outlined" | "flat" | "elevated" | undefined;
96
144
  pressable?: boolean | undefined;
97
- }>> & react.RefAttributes<any>> & _tamagui_web.StaticComponentObject<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
145
+ }>> & React$1.RefAttributes<tamagui.TamaguiElement>> & _tamagui_core.StaticComponentObject<_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_core.StackStyleBase, {
98
146
  size?: "lg" | "md" | "sm" | undefined;
99
147
  variant?: "outlined" | "flat" | "elevated" | undefined;
100
148
  pressable?: boolean | undefined;
101
- }, _tamagui_web.StaticConfigPublic> & Omit<_tamagui_web.StaticConfigPublic, "staticConfig" | "extractable" | "styleable"> & {
102
- __tama: [_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
149
+ }, _tamagui_core.StaticConfigPublic> & Omit<_tamagui_core.StaticConfigPublic, "staticConfig" | "extractable" | "styleable"> & {
150
+ __tama: [_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_core.StackStyleBase, {
103
151
  size?: "lg" | "md" | "sm" | undefined;
104
152
  variant?: "outlined" | "flat" | "elevated" | undefined;
105
153
  pressable?: boolean | undefined;
106
- }, _tamagui_web.StaticConfigPublic];
154
+ }, _tamagui_core.StaticConfigPublic];
107
155
  } & {
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>;
156
+ Header: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_core.StackStyleBase, {}, _tamagui_core.StaticConfigPublic>;
157
+ Content: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_core.StackStyleBase, {}, _tamagui_core.StaticConfigPublic>;
158
+ Footer: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_core.StackStyleBase, {}, _tamagui_core.StaticConfigPublic>;
111
159
  };
112
160
 
113
- declare const InputField: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, TextInput, any, _tamagui_web.TextStylePropsBase & {
114
- readonly placeholderTextColor?: Omit<tamagui.ColorTokens | _tamagui_web.ThemeValueFallbackColor, "unset"> | undefined;
115
- readonly selectionColor?: Omit<tamagui.ColorTokens | _tamagui_web.ThemeValueFallbackColor, "unset"> | undefined;
161
+ declare const InputField: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, react_native.TextInput, _tamagui_core.TamaguiComponentPropsBaseBase & react_native.TextInputProps & tamagui.InputExtraProps, _tamagui_core.TextStylePropsBase & {
162
+ readonly placeholderTextColor?: Omit<tamagui.ColorTokens | _tamagui_core.ThemeValueFallbackColor, "unset"> | undefined;
163
+ readonly selectionColor?: Omit<tamagui.ColorTokens | _tamagui_core.ThemeValueFallbackColor, "unset"> | undefined;
116
164
  }, {
117
165
  size?: tamagui.SizeTokens | undefined;
118
166
  disabled?: boolean | undefined;
@@ -125,13 +173,13 @@ declare const InputField: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, TextI
125
173
  readonly placeholderTextColor: "color";
126
174
  readonly selectionColor: "color";
127
175
  };
128
- } & _tamagui_web.StaticConfigPublic>;
176
+ } & _tamagui_core.StaticConfigPublic>;
129
177
  type InputProps = GetProps<typeof InputField> & {
130
178
  label?: string;
131
179
  error?: string;
132
180
  hint?: string;
133
181
  };
134
- declare function Input({ label, error, hint, ...props }: InputProps): react_jsx_runtime.JSX.Element;
182
+ declare function Input({ label, error, hint, ...props }: InputProps): JSX.Element;
135
183
 
136
184
  type SimpleSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
137
185
  type AvatarProps = {
@@ -139,17 +187,17 @@ type AvatarProps = {
139
187
  name?: string;
140
188
  size?: number | SimpleSize;
141
189
  };
142
- declare const Avatar: react.MemoExoticComponent<({ uri, name, size: sizeIn }: AvatarProps) => react_jsx_runtime.JSX.Element>;
190
+ declare const Avatar: React$1.MemoExoticComponent<({ uri, name, size: sizeIn }: AvatarProps) => JSX.Element>;
143
191
 
144
- declare const SubHeading: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, tamagui.TextNonStyleProps, _tamagui_web.TextStylePropsBase, {
192
+ declare const SubHeading: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiTextElement, tamagui.TextNonStyleProps, _tamagui_core.TextStylePropsBase, {
145
193
  size?: tamagui.FontSizeTokens | undefined;
146
194
  unstyled?: boolean | undefined;
147
- }, _tamagui_web.StaticConfigPublic>;
195
+ }, _tamagui_core.StaticConfigPublic>;
148
196
  declare function SepHeading({ children }: {
149
197
  children: ReactNode;
150
- }): react_jsx_runtime.JSX.Element;
198
+ }): JSX.Element;
151
199
 
152
- declare const PageContainer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
200
+ declare const PageContainer: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_core.StackStyleBase, {
153
201
  elevation?: number | tamagui.SizeTokens | undefined;
154
202
  inset?: number | tamagui.SizeTokens | {
155
203
  top?: number;
@@ -158,8 +206,8 @@ declare const PageContainer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, an
158
206
  right?: number;
159
207
  } | null | undefined;
160
208
  fullscreen?: boolean | undefined;
161
- }, _tamagui_web.StaticConfigPublic>;
162
- declare const PageMainContainer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
209
+ }, _tamagui_core.StaticConfigPublic>;
210
+ declare const PageMainContainer: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_core.StackStyleBase, {
163
211
  elevation?: number | tamagui.SizeTokens | undefined;
164
212
  inset?: number | tamagui.SizeTokens | {
165
213
  top?: number;
@@ -168,34 +216,34 @@ declare const PageMainContainer: tamagui.TamaguiComponent<_tamagui_web.TamaDefer
168
216
  right?: number;
169
217
  } | null | undefined;
170
218
  fullscreen?: boolean | undefined;
171
- }, _tamagui_web.StaticConfigPublic>;
219
+ }, _tamagui_core.StaticConfigPublic>;
172
220
 
173
221
  declare function DialogProvider({ children }: {
174
222
  children: ReactNode;
175
- }): react_jsx_runtime.JSX.Element;
223
+ }): JSX.Element;
176
224
  declare const showError: (error: unknown, title?: string) => void;
177
225
  declare const dialogConfirm: (props: {
178
226
  title?: string;
179
227
  description?: string;
180
228
  }) => Promise<boolean>;
181
229
 
182
- declare const Pressable: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
230
+ declare const Pressable: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_core.StackStyleBase, {}, _tamagui_core.StaticConfigPublic>;
183
231
 
184
- declare const Image: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, unknown, _tamagui_web.TamaguiComponentPropsBaseBase & Omit<Omit<_tamagui_web.GetFinalProps<any, _tamagui_web.StackStyleBase, {}>, "borderRadius"> & {
232
+ declare const Image: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, unknown, _tamagui_core.TamaguiComponentPropsBaseBase & Omit<Omit<_tamagui_core.GetFinalProps<_tamagui_core.TamaguiComponentPropsBaseBase & react_native.ImageProps, _tamagui_core.StackStyleBase, {}>, "borderRadius"> & {
185
233
  borderRadius?: tamagui.RadiusTokens;
186
- }, "style" | "onLayout" | "width" | "height" | "resizeMode"> & {
234
+ }, "style" | "onLayout" | "height" | "width" | "resizeMode"> & {
187
235
  width?: string | number | tamagui.SizeTokens | tamagui.ThemeValueFallback;
188
236
  height?: string | number | tamagui.SizeTokens | tamagui.ThemeValueFallback;
189
- src?: string | any;
190
- resizeMode?: any;
237
+ src?: string | (react_native.ImageSourcePropType | undefined);
238
+ resizeMode?: react_native.ImageResizeMode | undefined;
191
239
  objectFit?: React.CSSProperties["objectFit"];
192
- } & Omit<tamagui.StackProps, string | number | symbol>, _tamagui_web.StackStyleBase, {}, _tamagui_web.StaticConfigPublic>;
240
+ } & 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_core.GroupMediaKeys | `$theme-${string}` | `$theme-${number}` | keyof _tamagui_core.WithPseudoProps<_tamagui_core.WithThemeValues<_tamagui_core.StackStyleBase> & _tamagui_core.WithShorthands<_tamagui_core.WithThemeValues<_tamagui_core.StackStyleBase>>> | "source" | "onError" | "onLoad" | "onLoadEnd" | "onLoadStart" | "progressiveRenderingEnabled" | "resizeMode" | "resizeMethod" | "src" | "srcSet" | "loadingIndicatorSource" | "defaultSource" | "alt" | "crossOrigin" | "tintColor" | "referrerPolicy" | "blurRadius" | "capInsets" | "onProgress" | "onPartialLoad" | "fadeDuration">, _tamagui_core.StackStyleBase, {}, _tamagui_core.StaticConfigPublic>;
193
241
 
194
242
  type BadgeProps = {
195
243
  children: ReactNode;
196
244
  variant?: 'default' | 'success' | 'warning' | 'error' | 'info';
197
245
  };
198
- declare function Badge({ children, variant }: BadgeProps): react_jsx_runtime.JSX.Element;
246
+ declare function Badge({ children, variant }: BadgeProps): JSX.Element;
199
247
 
200
248
  declare const ICONS: {
201
249
  readonly home: "⌂";
@@ -250,7 +298,7 @@ type IconProps = {
250
298
  size?: number;
251
299
  color?: string;
252
300
  };
253
- declare function Icon({ name, size, color }: IconProps): react_jsx_runtime.JSX.Element;
301
+ declare function Icon({ name, size, color }: IconProps): JSX.Element;
254
302
 
255
303
  type BlinkAccordionItem = {
256
304
  id: string;
@@ -262,7 +310,7 @@ type BlinkAccordionProps = {
262
310
  defaultOpen?: string[];
263
311
  allowMultiple?: boolean;
264
312
  };
265
- declare function BlinkAccordion({ items, defaultOpen, allowMultiple }: BlinkAccordionProps): react_jsx_runtime.JSX.Element;
313
+ declare function BlinkAccordion({ items, defaultOpen, allowMultiple }: BlinkAccordionProps): JSX.Element;
266
314
 
267
315
  type BlinkTabItem = {
268
316
  key: string;
@@ -274,7 +322,7 @@ type BlinkTabsProps = {
274
322
  onTabChange?: (key: string) => void;
275
323
  variant?: 'underline' | 'pill';
276
324
  };
277
- declare function BlinkTabs({ tabs, activeTab, onTabChange, variant }: BlinkTabsProps): react_jsx_runtime.JSX.Element;
325
+ declare function BlinkTabs({ tabs, activeTab, onTabChange, variant }: BlinkTabsProps): JSX.Element;
278
326
 
279
327
  type BlinkToggleOption = {
280
328
  value: string;
@@ -286,7 +334,7 @@ type BlinkToggleGroupProps = {
286
334
  onValueChange: (value: string) => void;
287
335
  size?: 'sm' | 'md' | 'lg';
288
336
  };
289
- declare function BlinkToggleGroup({ options, value, onValueChange, size }: BlinkToggleGroupProps): react_jsx_runtime.JSX.Element;
337
+ declare function BlinkToggleGroup({ options, value, onValueChange, size }: BlinkToggleGroupProps): JSX.Element;
290
338
 
291
339
  type BlinkToastVariant = 'default' | 'success' | 'error' | 'warning';
292
340
  type BlinkToastData = {
@@ -307,7 +355,7 @@ type BlinkToastContextType = {
307
355
  declare const toast: (title: string, options?: BlinkToastOptions | BlinkToastVariant) => void;
308
356
  declare function BlinkToastProvider({ children }: {
309
357
  children: ReactNode;
310
- }): react_jsx_runtime.JSX.Element;
358
+ }): JSX.Element;
311
359
  declare function useBlinkToast(): BlinkToastContextType;
312
360
 
313
361
  type FormFieldProps = {
@@ -317,14 +365,29 @@ type FormFieldProps = {
317
365
  required?: boolean;
318
366
  children: ReactNode;
319
367
  };
320
- declare function FormField({ label, error, helperText, required, children }: FormFieldProps): react_jsx_runtime.JSX.Element;
368
+ declare function FormField({ label, error, helperText, required, children }: FormFieldProps): JSX.Element;
321
369
 
322
370
  type TooltipProps = {
323
371
  content: string;
324
372
  children: ReactNode;
325
373
  side?: 'top' | 'bottom' | 'left' | 'right';
326
374
  };
327
- declare function BlinkTooltip({ content, children, side }: TooltipProps): react_jsx_runtime.JSX.Element;
375
+ declare function BlinkTooltip({ content, children, side }: TooltipProps): JSX.Element;
376
+
377
+ declare function GoogleLogo({ size }: {
378
+ size?: number;
379
+ }): JSX.Element;
380
+ declare function AppleLogo({ size, color }: {
381
+ size?: number;
382
+ color?: string;
383
+ }): JSX.Element;
384
+ declare function GitHubLogo({ size, color }: {
385
+ size?: number;
386
+ color?: string;
387
+ }): JSX.Element;
388
+ declare function MicrosoftLogo({ size }: {
389
+ size?: number;
390
+ }): JSX.Element;
328
391
 
329
392
  type StepPageProps = {
330
393
  title: string;
@@ -332,9 +395,9 @@ type StepPageProps = {
332
395
  children: ReactNode;
333
396
  bottom?: ReactNode;
334
397
  };
335
- declare function StepPageLayout({ title, description, children, bottom }: StepPageProps): react_jsx_runtime.JSX.Element;
398
+ declare function StepPageLayout({ title, description, children, bottom }: StepPageProps): JSX.Element;
336
399
 
337
- declare const ScreenLayout: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_web.StackStyleBase, {
400
+ declare const ScreenLayout: tamagui.TamaguiComponent<_tamagui_core.TamaDefer, tamagui.TamaguiElement, _tamagui_core.RNTamaguiViewNonStyleProps, _tamagui_core.StackStyleBase, {
338
401
  elevation?: number | tamagui.SizeTokens | undefined;
339
402
  inset?: number | tamagui.SizeTokens | {
340
403
  top?: number;
@@ -346,7 +409,7 @@ declare const ScreenLayout: tamagui.TamaguiComponent<_tamagui_web.TamaDefer, any
346
409
  padded?: boolean | undefined;
347
410
  centered?: boolean | undefined;
348
411
  safe?: boolean | undefined;
349
- }, _tamagui_web.StaticConfigPublic>;
412
+ }, _tamagui_core.StaticConfigPublic>;
350
413
 
351
414
  type SectionProps = {
352
415
  title?: string;
@@ -354,7 +417,7 @@ type SectionProps = {
354
417
  children: ReactNode;
355
418
  gap?: GetProps<typeof YStack>['gap'];
356
419
  };
357
- declare function Section({ title, description, children, gap }: SectionProps): react_jsx_runtime.JSX.Element;
420
+ declare function Section({ title, description, children, gap }: SectionProps): JSX.Element;
358
421
 
359
422
  type ListItemProps = {
360
423
  icon?: ReactNode;
@@ -363,24 +426,24 @@ type ListItemProps = {
363
426
  right?: ReactNode;
364
427
  onPress?: () => void;
365
428
  };
366
- declare function ListItem({ icon, title, subtitle, right, onPress }: ListItemProps): react_jsx_runtime.JSX.Element;
429
+ declare function ListItem({ icon, title, subtitle, right, onPress }: ListItemProps): JSX.Element;
367
430
 
368
431
  type DividerProps = {
369
432
  label?: string;
370
433
  };
371
- declare function Divider({ label }: DividerProps): react_jsx_runtime.JSX.Element;
434
+ declare function Divider({ label }: DividerProps): JSX.Element;
372
435
 
373
436
  type KeyboardStickyFooterProps = {
374
437
  children: ReactNode;
375
438
  offset?: number;
376
439
  };
377
- declare function KeyboardStickyFooter({ children, offset }: KeyboardStickyFooterProps): react_jsx_runtime.JSX.Element;
440
+ declare function KeyboardStickyFooter({ children, offset }: KeyboardStickyFooterProps): JSX.Element;
378
441
 
379
442
  type SafeAreaProps = {
380
443
  children: ReactNode;
381
444
  edges?: ('top' | 'bottom' | 'left' | 'right')[];
382
445
  };
383
- declare function SafeArea({ children, edges }: SafeAreaProps): react_jsx_runtime.JSX.Element;
446
+ declare function SafeArea({ children, edges }: SafeAreaProps): JSX.Element;
384
447
 
385
448
  type GridProps = {
386
449
  children: ReactNode;
@@ -393,43 +456,97 @@ type ContainerProps = {
393
456
  centered?: boolean;
394
457
  padding?: string;
395
458
  };
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;
459
+ declare function Grid({ children, columns, gap }: GridProps): JSX.Element;
460
+ declare function Container({ children, maxWidth, centered, padding }: ContainerProps): JSX.Element;
398
461
 
399
462
  type PlanOption = {
400
463
  id: string;
401
464
  name: string;
402
465
  price: string;
403
466
  period: string;
404
- features: string[];
467
+ tagline?: string;
468
+ pricePerWeek?: string;
469
+ savings?: string;
405
470
  popular?: boolean;
471
+ trial?: string;
472
+ features?: string[];
473
+ };
474
+ type PaywallVariant = 'default' | 'social-proof' | 'comparison' | 'creator-sheet' | 'immersive-dark';
475
+ type PaywallFeature = string | {
476
+ title: string;
477
+ description?: string;
478
+ icon?: ReactNode;
479
+ };
480
+ type PaywallComparisonRow = {
481
+ label: string;
482
+ free?: boolean;
483
+ premium?: boolean;
484
+ };
485
+ type PaywallTestimonial = {
486
+ quote: string;
487
+ author: string;
488
+ meta?: string;
489
+ };
490
+ type PaywallCreator = {
491
+ name: string;
492
+ meta?: string;
493
+ avatar?: ReactNode;
406
494
  };
407
495
  type PaywallScreenProps = {
496
+ variant?: PaywallVariant;
497
+ eyebrow?: string;
408
498
  title?: string;
409
499
  subtitle?: string;
500
+ features?: PaywallFeature[];
410
501
  plans: PlanOption[];
411
502
  selectedPlan?: string;
412
503
  onSelectPlan?: (planId: string) => void;
413
504
  onContinue?: () => void;
505
+ onClose?: () => void;
414
506
  onRestore?: () => void;
507
+ onTerms?: () => void;
508
+ onPrivacy?: () => void;
415
509
  continueLabel?: string;
510
+ reassurance?: string;
511
+ hero?: ReactNode;
512
+ socialProof?: string;
513
+ countdownMinutes?: number;
514
+ badge?: string;
515
+ comparisonRows?: PaywallComparisonRow[];
516
+ testimonials?: PaywallTestimonial[];
517
+ creator?: PaywallCreator;
518
+ topSlot?: ReactNode;
519
+ footerSlot?: ReactNode;
520
+ trustBadges?: {
521
+ icon?: ReactNode;
522
+ label: string;
523
+ }[];
416
524
  };
417
- declare function PaywallScreen({ title, subtitle, plans, selectedPlan, onSelectPlan, onContinue, onRestore, continueLabel, }: PaywallScreenProps): react_jsx_runtime.JSX.Element;
525
+ 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): JSX.Element;
418
526
 
527
+ type OnboardingVariant = 'default' | 'calm-gradient' | 'card-tilt' | 'editorial' | 'selection-step' | 'permission-prompt';
419
528
  type OnboardingStep = {
420
529
  title: string;
421
530
  description: string;
422
531
  icon?: ReactNode;
532
+ hero?: ReactNode;
533
+ eyebrow?: string;
534
+ ctaLabel?: string;
535
+ background?: ReactNode;
423
536
  };
424
537
  type OnboardingCarouselProps = {
425
538
  steps: OnboardingStep[];
539
+ variant?: OnboardingVariant;
540
+ brand?: ReactNode;
541
+ topLeading?: ReactNode;
426
542
  onComplete?: () => void;
427
543
  onSkip?: () => void;
428
544
  completeLabel?: string;
429
545
  skipLabel?: string;
430
546
  nextLabel?: string;
547
+ footerSlot?: ReactNode;
431
548
  };
432
- declare function OnboardingCarousel({ steps, onComplete, onSkip, completeLabel, skipLabel, nextLabel, }: OnboardingCarouselProps): react_jsx_runtime.JSX.Element;
549
+ declare function OnboardingCarousel({ steps, variant, brand, topLeading, onComplete, onSkip, completeLabel, skipLabel, nextLabel, footerSlot, }: OnboardingCarouselProps): JSX.Element;
433
550
 
434
551
  type ChatMessage = {
435
552
  id: string;
@@ -443,7 +560,7 @@ type ChatBubbleProps = {
443
560
  message: ChatMessage;
444
561
  showAvatar?: boolean;
445
562
  };
446
- declare function ChatBubble({ message, showAvatar }: ChatBubbleProps): react_jsx_runtime.JSX.Element;
563
+ declare function ChatBubble({ message, showAvatar }: ChatBubbleProps): JSX.Element;
447
564
 
448
565
  type SettingsItem = {
449
566
  id: string;
@@ -464,7 +581,7 @@ type SettingsScreenProps = {
464
581
  sections: SettingsSection[];
465
582
  header?: ReactNode;
466
583
  };
467
- declare function SettingsScreen({ sections, header }: SettingsScreenProps): react_jsx_runtime.JSX.Element;
584
+ declare function SettingsScreen({ sections, header }: SettingsScreenProps): JSX.Element;
468
585
 
469
586
  type EmptyStateProps = {
470
587
  icon?: ReactNode;
@@ -473,7 +590,7 @@ type EmptyStateProps = {
473
590
  actionLabel?: string;
474
591
  onAction?: () => void;
475
592
  };
476
- declare function EmptyState({ icon, title, description, actionLabel, onAction }: EmptyStateProps): react_jsx_runtime.JSX.Element;
593
+ declare function EmptyState({ icon, title, description, actionLabel, onAction }: EmptyStateProps): JSX.Element;
477
594
 
478
595
  type ProfileHeaderProps = {
479
596
  name: string;
@@ -485,7 +602,7 @@ type ProfileHeaderProps = {
485
602
  }[];
486
603
  actions?: ReactNode;
487
604
  };
488
- declare function ProfileHeader({ name, subtitle, avatar, stats, actions }: ProfileHeaderProps): react_jsx_runtime.JSX.Element;
605
+ declare function ProfileHeader({ name, subtitle, avatar, stats, actions }: ProfileHeaderProps): JSX.Element;
489
606
 
490
607
  type AppHeaderVariant = 'simple' | 'back' | 'profile' | 'centered';
491
608
  type AppHeaderProps = {
@@ -499,7 +616,7 @@ type AppHeaderProps = {
499
616
  transparent?: boolean;
500
617
  borderless?: boolean;
501
618
  };
502
- declare function AppHeader({ title, subtitle, variant, onBack, avatar, left, right, transparent, borderless }: AppHeaderProps): react_jsx_runtime.JSX.Element;
619
+ declare function AppHeader({ title, subtitle, variant, onBack, avatar, left, right, transparent, borderless }: AppHeaderProps): JSX.Element;
503
620
 
504
621
  type BottomSheetProps = {
505
622
  open: boolean;
@@ -510,19 +627,29 @@ type BottomSheetProps = {
510
627
  dismissOnSnapToBottom?: boolean;
511
628
  showHandle?: boolean;
512
629
  showClose?: boolean;
630
+ zIndex?: number;
513
631
  };
514
- declare function BottomSheet({ open, onOpenChange, title, children, snapPoints, dismissOnSnapToBottom, showHandle, showClose }: BottomSheetProps): react_jsx_runtime.JSX.Element;
632
+ declare function BottomSheet({ open, onOpenChange, title, children, snapPoints, dismissOnSnapToBottom, showHandle, showClose, zIndex }: BottomSheetProps): JSX.Element;
515
633
 
634
+ type AuthProviderBrand = 'google' | 'apple' | 'github' | 'microsoft' | 'custom';
635
+ type LoginScreenVariant = 'default' | 'editorial' | 'centered-card';
516
636
  type AuthProvider = {
517
637
  id: string;
518
638
  name: string;
519
639
  icon?: ReactNode;
640
+ brand?: AuthProviderBrand;
641
+ description?: string;
520
642
  };
521
643
  type LoginScreenProps = {
644
+ variant?: LoginScreenVariant;
522
645
  title?: string;
523
646
  subtitle?: string;
524
647
  logo?: ReactNode;
525
648
  providers?: AuthProvider[];
649
+ hero?: ReactNode;
650
+ backgroundSlot?: ReactNode;
651
+ footerSlot?: ReactNode;
652
+ providerButtonStyle?: 'neutral' | 'brand';
526
653
  onProviderPress?: (id: string) => void;
527
654
  showEmailForm?: boolean;
528
655
  onEmailSubmit?: (email: string, password: string) => void;
@@ -532,7 +659,7 @@ type LoginScreenProps = {
532
659
  onPrivacy?: () => void;
533
660
  loading?: boolean;
534
661
  };
535
- declare function LoginScreen({ title, subtitle, logo, providers, onProviderPress, showEmailForm, onEmailSubmit, onForgotPassword, onCreateAccount, onTerms, onPrivacy, loading }: LoginScreenProps): react_jsx_runtime.JSX.Element;
662
+ declare function LoginScreen({ variant, title, subtitle, logo, providers, hero, backgroundSlot, footerSlot, providerButtonStyle, onProviderPress, showEmailForm, onEmailSubmit, onForgotPassword, onCreateAccount, onTerms, onPrivacy, loading, }: LoginScreenProps): JSX.Element;
536
663
 
537
664
  type TabBarItem = {
538
665
  id: string;
@@ -545,7 +672,7 @@ type TabBarProps = {
545
672
  onTabPress: (id: string) => void;
546
673
  showLabels?: boolean;
547
674
  };
548
- declare function TabBar({ tabs, activeTab, onTabPress, showLabels }: TabBarProps): react_jsx_runtime.JSX.Element;
675
+ declare function TabBar({ tabs, activeTab, onTabPress, showLabels }: TabBarProps): JSX.Element;
549
676
 
550
677
  type SearchBarProps = {
551
678
  value: string;
@@ -555,7 +682,7 @@ type SearchBarProps = {
555
682
  onCancel?: () => void;
556
683
  autoFocus?: boolean;
557
684
  };
558
- declare function SearchBar({ value, onChangeText, placeholder, onFilter, onCancel, autoFocus }: SearchBarProps): react_jsx_runtime.JSX.Element;
685
+ declare function SearchBar({ value, onChangeText, placeholder, onFilter, onCancel, autoFocus }: SearchBarProps): JSX.Element;
559
686
 
560
687
  type FABProps = {
561
688
  icon?: ReactNode;
@@ -564,7 +691,7 @@ type FABProps = {
564
691
  position?: 'bottom-right' | 'bottom-center' | 'bottom-left';
565
692
  size?: 'sm' | 'md' | 'lg';
566
693
  };
567
- declare function FloatingActionButton({ icon, label, onPress, position, size }: FABProps): react_jsx_runtime.JSX.Element;
694
+ declare function FloatingActionButton({ icon, label, onPress, position, size }: FABProps): JSX.Element;
568
695
 
569
696
  type ActionSheetItem = {
570
697
  id: string;
@@ -579,8 +706,9 @@ type ActionSheetProps = {
579
706
  items: ActionSheetItem[];
580
707
  onSelect: (id: string) => void;
581
708
  cancelLabel?: string;
709
+ zIndex?: number;
582
710
  };
583
- declare function ActionSheet({ open, onOpenChange, title, items, onSelect, cancelLabel }: ActionSheetProps): react_jsx_runtime.JSX.Element;
711
+ declare function ActionSheet({ open, onOpenChange, title, items, onSelect, cancelLabel, zIndex }: ActionSheetProps): JSX.Element;
584
712
 
585
713
  type SkeletonProps = {
586
714
  width?: number | string;
@@ -588,7 +716,7 @@ type SkeletonProps = {
588
716
  borderRadius?: number;
589
717
  variant?: 'text' | 'circular' | 'rectangular';
590
718
  };
591
- declare function Skeleton({ width, height, borderRadius, variant }: SkeletonProps): react_jsx_runtime.JSX.Element;
719
+ declare function Skeleton({ width, height, borderRadius, variant }: SkeletonProps): JSX.Element;
592
720
 
593
721
  type NotificationBannerProps = {
594
722
  title: string;
@@ -598,14 +726,14 @@ type NotificationBannerProps = {
598
726
  onDismiss?: () => void;
599
727
  icon?: ReactNode;
600
728
  };
601
- declare function NotificationBanner({ title, message, variant, onPress, onDismiss, icon }: NotificationBannerProps): react_jsx_runtime.JSX.Element;
729
+ declare function NotificationBanner({ title, message, variant, onPress, onDismiss, icon }: NotificationBannerProps): JSX.Element;
602
730
 
603
731
  type ProgressStepsProps = {
604
732
  steps: string[];
605
733
  currentStep: number;
606
734
  variant?: 'dots' | 'bar' | 'numbered';
607
735
  };
608
- declare function ProgressSteps({ steps, currentStep, variant }: ProgressStepsProps): react_jsx_runtime.JSX.Element;
736
+ declare function ProgressSteps({ steps, currentStep, variant }: ProgressStepsProps): JSX.Element;
609
737
 
610
738
  type SwipeAction = {
611
739
  id: string;
@@ -618,7 +746,7 @@ type SwipeableRowProps = {
618
746
  leftActions?: SwipeAction[];
619
747
  rightActions?: SwipeAction[];
620
748
  };
621
- declare function SwipeableRow({ children, leftActions, rightActions }: SwipeableRowProps): react_jsx_runtime.JSX.Element;
749
+ declare function SwipeableRow({ children, leftActions, rightActions }: SwipeableRowProps): JSX.Element;
622
750
 
623
751
  type MediaCardProps = {
624
752
  image: string;
@@ -629,7 +757,7 @@ type MediaCardProps = {
629
757
  onPress?: () => void;
630
758
  badge?: string;
631
759
  };
632
- declare function MediaCard({ image, title, subtitle, overlay, aspectRatio, onPress, badge }: MediaCardProps): react_jsx_runtime.JSX.Element;
760
+ declare function MediaCard({ image, title, subtitle, overlay, aspectRatio, onPress, badge }: MediaCardProps): JSX.Element;
633
761
 
634
762
  type CarouselProps = {
635
763
  children: ReactNode;
@@ -637,13 +765,356 @@ type CarouselProps = {
637
765
  snapToInterval?: number;
638
766
  showIndicators?: boolean;
639
767
  };
640
- declare function Carousel({ children, gap, snapToInterval, showIndicators }: CarouselProps): react_jsx_runtime.JSX.Element;
768
+ declare function Carousel({ children, gap, snapToInterval, showIndicators }: CarouselProps): JSX.Element;
641
769
 
642
770
  type PullToRefreshProps = {
643
771
  children: ReactNode;
644
772
  onRefresh: () => void;
645
773
  refreshing?: boolean;
646
774
  };
647
- declare function PullToRefresh({ children, onRefresh, refreshing }: PullToRefreshProps): react_jsx_runtime.JSX.Element;
775
+ declare function PullToRefresh({ children, onRefresh, refreshing }: PullToRefreshProps): JSX.Element;
776
+
777
+ type ProductCardProps = {
778
+ image: string;
779
+ title: string;
780
+ price: string;
781
+ originalPrice?: string;
782
+ rating?: number;
783
+ reviewCount?: number;
784
+ badge?: string;
785
+ onPress?: () => void;
786
+ onAddToCart?: () => void;
787
+ variant?: 'vertical' | 'horizontal';
788
+ };
789
+ declare function ProductCard({ image, title, price, originalPrice, rating, reviewCount, badge, onPress, onAddToCart, variant }: ProductCardProps): JSX.Element;
790
+
791
+ type PricingPlan = {
792
+ id: string;
793
+ name: string;
794
+ price: string;
795
+ period?: string;
796
+ description?: string;
797
+ features: {
798
+ label: string;
799
+ included: boolean;
800
+ }[];
801
+ popular?: boolean;
802
+ cta?: string;
803
+ trial?: string;
804
+ };
805
+ type PricingTableProps = {
806
+ plans: PricingPlan[];
807
+ selectedPlan?: string;
808
+ onSelectPlan?: (planId: string) => void;
809
+ annual?: boolean;
810
+ onToggleBilling?: (annual: boolean) => void;
811
+ onContinue?: () => void;
812
+ continueLabel?: string;
813
+ reassurance?: string;
814
+ };
815
+ declare function PricingTable({ plans, selectedPlan, onSelectPlan, annual, onToggleBilling, onContinue, continueLabel, reassurance }: PricingTableProps): JSX.Element;
816
+
817
+ type CountdownBannerProps = {
818
+ endTime?: Date;
819
+ minutes?: number;
820
+ label?: string;
821
+ onExpire?: () => void;
822
+ variant?: 'banner' | 'compact' | 'badge';
823
+ };
824
+ declare function CountdownBanner({ endTime, minutes, label, onExpire, variant }: CountdownBannerProps): JSX.Element | null;
825
+
826
+ type TestimonialCardProps = {
827
+ quote: string;
828
+ author: string;
829
+ role?: string;
830
+ avatar?: string;
831
+ rating?: number;
832
+ variant?: 'card' | 'minimal' | 'featured';
833
+ };
834
+ declare function TestimonialCard({ quote, author, role, avatar, rating, variant }: TestimonialCardProps): JSX.Element;
835
+
836
+ type ConfirmDialogProps = {
837
+ open: boolean;
838
+ onOpenChange: (open: boolean) => void;
839
+ title: string;
840
+ description?: string;
841
+ confirmLabel?: string;
842
+ cancelLabel?: string;
843
+ onConfirm?: () => void;
844
+ onCancel?: () => void;
845
+ destructive?: boolean;
846
+ icon?: ReactNode;
847
+ };
848
+ declare function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel, cancelLabel, onConfirm, onCancel, destructive, icon, }: ConfirmDialogProps): JSX.Element;
849
+
850
+ type ChipProps = {
851
+ label: string;
852
+ selected?: boolean;
853
+ onPress?: () => void;
854
+ onRemove?: () => void;
855
+ variant?: 'filled' | 'outlined';
856
+ size?: 'sm' | 'md' | 'lg';
857
+ icon?: ReactNode;
858
+ color?: string;
859
+ };
860
+ type ChipGroupProps = {
861
+ chips: {
862
+ id: string;
863
+ label: string;
864
+ icon?: ReactNode;
865
+ }[];
866
+ selected?: string[];
867
+ onSelectionChange?: (selected: string[]) => void;
868
+ multiSelect?: boolean;
869
+ variant?: 'filled' | 'outlined';
870
+ size?: 'sm' | 'md' | 'lg';
871
+ };
872
+ declare function Chip({ label, selected, onPress, onRemove, variant, size, icon, color }: ChipProps): JSX.Element;
873
+ declare function ChipGroup({ chips, selected, onSelectionChange, multiSelect, variant, size }: ChipGroupProps): JSX.Element;
874
+
875
+ type OTPInputProps = {
876
+ length?: number;
877
+ value?: string;
878
+ onChange?: (value: string) => void;
879
+ onComplete?: (code: string) => void;
880
+ error?: boolean;
881
+ autoFocus?: boolean;
882
+ secureEntry?: boolean;
883
+ };
884
+ declare function OTPInput({ length, value, onChange, onComplete, error, autoFocus, secureEntry }: OTPInputProps): JSX.Element;
885
+
886
+ type PasswordInputProps = {
887
+ value?: string;
888
+ onChangeText?: (value: string) => void;
889
+ placeholder?: string;
890
+ label?: string;
891
+ error?: string;
892
+ size?: '$3' | '$4' | '$5';
893
+ strengthIndicator?: boolean;
894
+ };
895
+ declare function PasswordInput({ value, onChangeText, placeholder, label, error, size, strengthIndicator }: PasswordInputProps): JSX.Element;
896
+
897
+ type AvatarGroupProps = {
898
+ avatars: {
899
+ uri?: string;
900
+ name?: string;
901
+ color?: string;
902
+ }[];
903
+ max?: number;
904
+ size?: number;
905
+ overlap?: number;
906
+ };
907
+ declare function AvatarGroup({ avatars, max, size, overlap }: AvatarGroupProps): JSX.Element;
908
+
909
+ type SwipeCardItem = {
910
+ id: string;
911
+ [key: string]: any;
912
+ };
913
+ type SwipeCardsProps<T extends SwipeCardItem> = {
914
+ items: T[];
915
+ renderCard: (item: T) => ReactNode;
916
+ onSwipeLeft?: (item: T) => void;
917
+ onSwipeRight?: (item: T) => void;
918
+ onEmpty?: () => void;
919
+ leftLabel?: string;
920
+ rightLabel?: string;
921
+ emptyMessage?: string;
922
+ };
923
+ declare function SwipeCards<T extends SwipeCardItem>({ items, renderCard, onSwipeLeft, onSwipeRight, onEmpty, leftLabel, rightLabel, emptyMessage, }: SwipeCardsProps<T>): JSX.Element;
924
+
925
+ type GlassCardProps = {
926
+ children: ReactNode;
927
+ intensity?: 'light' | 'medium' | 'heavy';
928
+ tint?: 'light' | 'dark';
929
+ borderRadius?: number | string;
930
+ padding?: number | string;
931
+ elevated?: boolean;
932
+ };
933
+ declare function GlassCard({ children, intensity, tint, borderRadius, padding, elevated, }: GlassCardProps): JSX.Element;
934
+
935
+ type DataTableColumn<T> = {
936
+ key: string;
937
+ header: string;
938
+ render?: (value: any, row: T) => ReactNode;
939
+ sortable?: boolean;
940
+ width?: number | string;
941
+ };
942
+ type DataTableProps<T extends Record<string, any>> = {
943
+ columns: DataTableColumn<T>[];
944
+ data: T[];
945
+ onRowPress?: (row: T) => void;
946
+ emptyMessage?: string;
947
+ };
948
+ declare function StatusBadge({ status }: {
949
+ status: string;
950
+ }): JSX.Element;
951
+ declare function DataTable<T extends Record<string, any>>({ columns, data, onRowPress, emptyMessage }: DataTableProps<T>): JSX.Element;
952
+
953
+ type DatePickerProps = {
954
+ value?: Date;
955
+ onDateChange?: (date: Date) => void;
956
+ minDate?: Date;
957
+ maxDate?: Date;
958
+ startDay?: 0 | 1;
959
+ placeholder?: string;
960
+ };
961
+ declare function DatePicker({ value, onDateChange, minDate, maxDate, startDay }: DatePickerProps): JSX.Element;
962
+
963
+ type EventCardProps = {
964
+ title: string;
965
+ subtitle?: string;
966
+ time?: string;
967
+ location?: string;
968
+ label?: string;
969
+ participants?: number;
970
+ maxParticipants?: number;
971
+ theme?: 'purple' | 'green' | 'blue' | 'orange' | 'red' | 'pink';
972
+ onPress?: () => void;
973
+ actions?: ReactNode;
974
+ };
975
+ declare function EventCard({ theme, ...props }: EventCardProps): JSX.Element;
976
+
977
+ type PreferenceItem = {
978
+ type: 'toggle';
979
+ id: string;
980
+ title: string;
981
+ description?: string;
982
+ value: boolean;
983
+ onValueChange: (v: boolean) => void;
984
+ } | {
985
+ type: 'select';
986
+ id: string;
987
+ title: string;
988
+ description?: string;
989
+ value: string;
990
+ options: {
991
+ label: string;
992
+ value: string;
993
+ }[];
994
+ onValueChange: (v: string) => void;
995
+ } | {
996
+ type: 'slider';
997
+ id: string;
998
+ title: string;
999
+ description?: string;
1000
+ value: number;
1001
+ min?: number;
1002
+ max?: number;
1003
+ onValueChange: (v: number) => void;
1004
+ } | {
1005
+ type: 'action';
1006
+ id: string;
1007
+ title: string;
1008
+ description?: string;
1009
+ onPress: () => void;
1010
+ destructive?: boolean;
1011
+ };
1012
+ type PreferenceSection = {
1013
+ title: string;
1014
+ description?: string;
1015
+ items: PreferenceItem[];
1016
+ };
1017
+ type UserPreferencesProps = {
1018
+ sections: PreferenceSection[];
1019
+ };
1020
+ declare function UserPreferences({ sections }: UserPreferencesProps): JSX.Element;
1021
+
1022
+ type BlinkSelectItem = {
1023
+ label: string;
1024
+ value: string;
1025
+ };
1026
+ type BlinkSelectProps = {
1027
+ items: BlinkSelectItem[];
1028
+ value?: string;
1029
+ onValueChange?: (value: string) => void;
1030
+ placeholder?: string;
1031
+ label?: string;
1032
+ size?: GetProps<typeof Select.Trigger>['size'];
1033
+ disabled?: boolean;
1034
+ width?: string | number;
1035
+ };
1036
+ declare function BlinkSelect({ items, value, onValueChange, placeholder, label, size, disabled, width, }: BlinkSelectProps): JSX.Element;
1037
+
1038
+ type BlinkDialogProps = {
1039
+ open?: boolean;
1040
+ onOpenChange?: (open: boolean) => void;
1041
+ trigger?: React__default.ReactNode;
1042
+ title?: string;
1043
+ description?: string;
1044
+ children?: React__default.ReactNode;
1045
+ confirmLabel?: string;
1046
+ cancelLabel?: string;
1047
+ onConfirm?: () => void;
1048
+ onCancel?: () => void;
1049
+ confirmTheme?: GetProps<typeof Button$1>['theme'];
1050
+ };
1051
+ declare function BlinkDialog({ open, onOpenChange, trigger, title, description, children, confirmLabel, cancelLabel, onConfirm, onCancel, confirmTheme, }: BlinkDialogProps): JSX.Element;
1052
+
1053
+ type BlinkPopoverProps = {
1054
+ trigger: React__default.ReactNode;
1055
+ children: React__default.ReactNode;
1056
+ placement?: 'top' | 'bottom' | 'left' | 'right';
1057
+ allowFlip?: boolean;
1058
+ size?: string;
1059
+ };
1060
+ declare function BlinkPopover({ trigger, children, placement, allowFlip, size, }: BlinkPopoverProps): JSX.Element;
1061
+
1062
+ type ImmersiveMediaAction = {
1063
+ id: string;
1064
+ label?: string;
1065
+ value?: string;
1066
+ icon?: ReactNode;
1067
+ onPress?: () => void;
1068
+ };
1069
+ type ImmersiveMediaScreenProps = {
1070
+ variant?: 'story' | 'reel' | 'sheet';
1071
+ media: ReactNode;
1072
+ title?: string;
1073
+ subtitle?: string;
1074
+ topLeft?: ReactNode;
1075
+ topCenter?: ReactNode;
1076
+ topRight?: ReactNode;
1077
+ actions?: ImmersiveMediaAction[];
1078
+ bottomMeta?: ReactNode;
1079
+ inputPlaceholder?: string;
1080
+ onInputPress?: () => void;
1081
+ sheetContent?: ReactNode;
1082
+ };
1083
+ declare function ImmersiveMediaScreen({ variant, media, title, subtitle, topLeft, topCenter, topRight, actions, bottomMeta, inputPlaceholder, onInputPress, sheetContent, }: ImmersiveMediaScreenProps): JSX.Element;
1084
+
1085
+ type FinanceMetric = {
1086
+ label: string;
1087
+ value: string;
1088
+ change?: string;
1089
+ };
1090
+ type FinanceQuickAction = {
1091
+ id: string;
1092
+ label: string;
1093
+ icon?: ReactNode;
1094
+ onPress?: () => void;
1095
+ };
1096
+ type FinanceDashboardSection = {
1097
+ id?: string;
1098
+ title: string;
1099
+ rows: Array<{
1100
+ id: string;
1101
+ title: string;
1102
+ subtitle?: string;
1103
+ value?: string;
1104
+ leading?: ReactNode;
1105
+ }>;
1106
+ };
1107
+ type FinanceDashboardProps = {
1108
+ title?: string;
1109
+ balanceLabel?: string;
1110
+ balance: string;
1111
+ rangeLabel?: string;
1112
+ metrics?: FinanceMetric[];
1113
+ quickActions?: FinanceQuickAction[];
1114
+ sections?: FinanceDashboardSection[];
1115
+ chartSlot?: ReactNode;
1116
+ topRight?: ReactNode;
1117
+ };
1118
+ declare function FinanceDashboard({ title, balanceLabel, balance, rangeLabel, metrics, quickActions, sections, chartSlot, topRight, }: FinanceDashboardProps): JSX.Element;
648
1119
 
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 };
1120
+ 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 };