@impulse-ui-native/primitives 2.0.0 → 2.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ImpulseUI Native contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,41 @@
1
+ # @impulse-ui-native/primitives
2
+
3
+ Token-aware React Native building blocks used directly by applications and by the higher-level Impulse UI Native packages.
4
+
5
+ ## Installation
6
+
7
+ ```sh
8
+ pnpm add @impulse-ui-native/primitives
9
+ ```
10
+
11
+ Render primitives inside `ThemeProvider` from `@impulse-ui-native/theme`.
12
+
13
+ ## Main exports
14
+
15
+ - `View` adds theme spacing, dimensions, flex, borders, colors, and shadow props to React Native's view.
16
+ - `SafeAreaView` maps safe-area edges to the theme spacing scale.
17
+ - `Typography` exposes named text presets such as `DisplayLarge`, `Title1`, `Body`, `Caption`, and `Code`.
18
+ - `Button`, `IconButton`, `Pressable`, and `Tag` provide themed interaction primitives.
19
+ - `Control` is a compound control system with `Provider`, `Root`, `Label`, `Container`, `Addon`, `Input`, `Placeholder`, `Value`, `Loader`, and `Error` parts.
20
+ - `createPreset` creates reusable themed typography presets.
21
+ - Public prop types describe every primitive and control part.
22
+
23
+ ## Example
24
+
25
+ ```tsx
26
+ import { Button, Tag, Typography, View } from "@impulse-ui-native/primitives";
27
+
28
+ export function ProfileSummary() {
29
+ return (
30
+ <View gap="md" padding="lg">
31
+ <Typography.Title3>Profile</Typography.Title3>
32
+ <Tag label="Active" color="success" />
33
+ <Button variant="filled" onPress={() => {}}>
34
+ Continue
35
+ </Button>
36
+ </View>
37
+ );
38
+ }
39
+ ```
40
+
41
+ Use the compound `Control` when building a custom field that should share the same label, addon, error, size, and variant behavior as `Input` and `Select`.
package/dist/index.d.mts CHANGED
@@ -4,14 +4,103 @@ import * as _impulse_ui_native_theme from '@impulse-ui-native/theme';
4
4
  import { SpacingProps, ColorProps, ShadowProps, BorderProps, FlexProps, DimensionProps, TypographyProps, ComponentSize, ComponentVariant, TagColor, AppTheme, TypographyPresetKey } from '@impulse-ui-native/theme';
5
5
  import * as react_native from 'react-native';
6
6
  import { View as View$1, ViewProps as ViewProps$1, TextProps as TextProps$1, PressableProps, ViewStyle, StyleProp, TextInputProps, ActivityIndicatorProps } from 'react-native';
7
- import * as react_native_safe_area_context from 'react-native-safe-area-context';
8
- import { SafeAreaViewProps as SafeAreaViewProps$1 } from 'react-native-safe-area-context';
9
7
  import * as react_jsx_runtime from 'react/jsx-runtime';
10
- import { IconProps } from '@impulse-ui-native/icon';
8
+ import { SafeAreaViewProps as SafeAreaViewProps$1 } from 'react-native-safe-area-context';
9
+ import { IconProps } from '@impulse-ui-native/icon/types';
11
10
 
12
11
  declare const View: react.NamedExoticComponent<react_native.ViewProps & _impulse_ui_native_theme.SpacingProps & _impulse_ui_native_theme.ColorProps & _impulse_ui_native_theme.ShadowProps & _impulse_ui_native_theme.BorderProps & _impulse_ui_native_theme.FlexProps & _impulse_ui_native_theme.DimensionProps & react.RefAttributes<View$1>>;
13
12
 
14
- declare const SafeAreaView: react.NamedExoticComponent<react_native_safe_area_context.NativeSafeAreaViewProps>;
13
+ type ViewProps = ViewProps$1 & SpacingProps & ColorProps & ShadowProps & BorderProps & FlexProps & DimensionProps;
14
+
15
+ type SafeAreaViewProps = SafeAreaViewProps$1;
16
+
17
+ interface TextProps extends TextProps$1, TypographyProps, FlexProps, ColorProps {
18
+ numeric?: boolean;
19
+ }
20
+
21
+ interface ButtonProps extends PressableProps, DimensionProps, SpacingProps, ShadowProps {
22
+ size?: ComponentSize;
23
+ variant?: ComponentVariant;
24
+ disabled?: boolean;
25
+ style?: ViewStyle;
26
+ loading?: boolean;
27
+ }
28
+ interface ButtonThemeProps {
29
+ size: ComponentSize;
30
+ variant: ComponentVariant;
31
+ disabled?: boolean;
32
+ }
33
+ interface PressableCoreProps extends PressableProps, Omit<ButtonProps, "style"> {
34
+ disabled?: boolean;
35
+ pressedStyle?: StyleProp<ViewStyle>;
36
+ }
37
+
38
+ interface IconButtonProps extends ButtonProps {
39
+ icon: IconProps["icon"];
40
+ }
41
+ interface IconButtonThemeProps {
42
+ size: ComponentSize;
43
+ variant: ComponentVariant;
44
+ disabled?: boolean;
45
+ }
46
+
47
+ interface TagProps {
48
+ label: string;
49
+ size?: ComponentSize;
50
+ variant?: ComponentVariant;
51
+ color?: TagColor;
52
+ closable?: boolean;
53
+ disabled?: boolean;
54
+ onClose?: () => void;
55
+ style?: ViewStyle;
56
+ onPress?: PressableProps["onPress"];
57
+ }
58
+ interface TagThemeProps {
59
+ size: ComponentSize;
60
+ variant: ComponentVariant;
61
+ color: TagColor;
62
+ disabled?: boolean;
63
+ }
64
+
65
+ interface ControlComponentCommonProps {
66
+ placeholder?: string;
67
+ label?: string;
68
+ PrefixIcon?: IconProps["icon"];
69
+ Prefix?: ComponentType;
70
+ onPressPrefix?: PressableCoreProps["onPress"];
71
+ SuffixIcon?: IconProps["icon"];
72
+ Suffix?: ComponentType;
73
+ onPressSuffix?: PressableCoreProps["onPress"];
74
+ }
75
+ interface ControlComponentProps {
76
+ size: ComponentSize;
77
+ variant: ComponentVariant;
78
+ error: string | undefined;
79
+ disabled: boolean | undefined;
80
+ }
81
+ interface ControlContextData extends ControlComponentProps {
82
+ }
83
+ interface ControlContainerProps extends ViewProps$1 {
84
+ }
85
+ interface ControlLabelProps extends TextProps$1 {
86
+ }
87
+ interface ControlErrorLabelProps extends TextProps$1 {
88
+ }
89
+ interface ControlAddonProps extends ViewProps$1 {
90
+ icon: IconProps["icon"] | undefined;
91
+ onPress: PressableCoreProps["onPress"] | undefined;
92
+ Content: ComponentType<any> | undefined;
93
+ }
94
+ interface ControlInputProps extends TextInputProps {
95
+ }
96
+ interface ControlPlaceholderProps extends TextProps$1 {
97
+ }
98
+ interface ControlValueProps extends TextProps$1 {
99
+ }
100
+ interface ControlLoaderProps extends ActivityIndicatorProps {
101
+ }
102
+
103
+ declare const SafeAreaView: react.MemoExoticComponent<(props: SafeAreaViewProps) => react_jsx_runtime.JSX.Element>;
15
104
 
16
105
  declare const Typography: {
17
106
  Master: react.MemoExoticComponent<{
@@ -105,115 +194,25 @@ declare const Typography: {
105
194
  };
106
195
  type TypographyComponent = (typeof Typography)[keyof typeof Typography];
107
196
 
108
- type ViewProps = ViewProps$1 & SpacingProps & ColorProps & ShadowProps & BorderProps & FlexProps & DimensionProps;
109
-
110
- type SafeAreaViewProps = SafeAreaViewProps$1;
111
-
112
- interface TextProps extends TextProps$1, TypographyProps, FlexProps, ColorProps {
113
- numeric?: boolean;
114
- }
115
-
116
- interface ButtonProps extends PressableProps, DimensionProps, SpacingProps, ShadowProps {
117
- size?: ComponentSize;
118
- variant?: ComponentVariant;
119
- disabled?: boolean;
120
- style?: ViewStyle;
121
- loading?: boolean;
122
- }
123
- interface ButtonThemeProps {
124
- size: ComponentSize;
125
- variant: ComponentVariant;
126
- disabled?: boolean;
127
- }
128
- interface PressableCoreProps extends PressableProps, Omit<ButtonProps, "style"> {
129
- disabled?: boolean;
130
- pressedStyle?: StyleProp<ViewStyle>;
131
- }
132
-
133
- interface IconButtonProps extends ButtonProps {
134
- icon: IconProps["icon"];
135
- }
136
- interface IconButtonThemeProps {
137
- size: ComponentSize;
138
- variant: ComponentVariant;
139
- disabled?: boolean;
140
- }
141
-
142
- interface TagProps {
143
- label: string;
144
- size?: ComponentSize;
145
- variant?: ComponentVariant;
146
- color?: TagColor;
147
- closable?: boolean;
148
- disabled?: boolean;
149
- onClose?: () => void;
150
- style?: ViewStyle;
151
- onPress?: PressableProps["onPress"];
152
- }
153
- interface TagThemeProps {
154
- size: ComponentSize;
155
- variant: ComponentVariant;
156
- color: TagColor;
157
- disabled?: boolean;
158
- }
159
-
160
- interface ControlComponentCommonProps {
161
- placeholder?: string;
162
- label?: string;
163
- PrefixIcon?: IconProps["icon"];
164
- Prefix?: ComponentType;
165
- onPressPrefix?: PressableCoreProps["onPress"];
166
- SuffixIcon?: IconProps["icon"];
167
- Suffix?: ComponentType;
168
- onPressSuffix?: PressableCoreProps["onPress"];
169
- }
170
- interface ControlComponentProps {
171
- size: ComponentSize;
172
- variant: ComponentVariant;
173
- error: string | undefined;
174
- disabled: boolean | undefined;
175
- }
176
- interface ControlContextData extends ControlComponentProps {
177
- }
178
- interface ControlContainerProps extends ViewProps$1 {
179
- }
180
- interface ControlLabelProps extends TextProps$1 {
181
- }
182
- interface ControlErrorLabelProps extends TextProps$1 {
183
- }
184
- interface ControlAddonProps extends ViewProps$1 {
185
- icon: IconProps["icon"] | undefined;
186
- onPress: PressableCoreProps["onPress"] | undefined;
187
- Content: ComponentType<any> | undefined;
188
- }
189
- interface ControlInputProps extends TextInputProps {
190
- }
191
- interface ControlPlaceholderProps extends TextProps$1 {
192
- }
193
- interface ControlValueProps extends TextProps$1 {
194
- }
195
- interface ControlLoaderProps extends ActivityIndicatorProps {
196
- }
197
-
198
- declare const Button: react.NamedExoticComponent<PropsWithChildren<ButtonProps>>;
197
+ declare const Button: react.MemoExoticComponent<({ size, variant, disabled, children, style, ...props }: PropsWithChildren<ButtonProps>) => react_jsx_runtime.JSX.Element>;
199
198
 
200
- declare const IconButton: react.NamedExoticComponent<PropsWithChildren<IconButtonProps>>;
199
+ declare const IconButton: react.MemoExoticComponent<({ size, variant, disabled, style, icon, ...props }: PropsWithChildren<IconButtonProps>) => react_jsx_runtime.JSX.Element>;
201
200
 
202
201
  declare const Pressable: ({ children, disabled, pressedStyle, style, ...props }: PropsWithChildren<PressableCoreProps>) => react_jsx_runtime.JSX.Element;
203
202
 
204
- declare const Tag: react.NamedExoticComponent<TagProps>;
203
+ declare const Tag: react.MemoExoticComponent<({ label, size, variant, color, closable, disabled, onClose, onPress, }: TagProps) => react_jsx_runtime.JSX.Element>;
205
204
 
206
205
  declare const Control: {
207
- Container: react.NamedExoticComponent<ControlContainerProps>;
208
- Provider: react.NamedExoticComponent<react.PropsWithChildren<ControlContextData>>;
209
- Root: react.NamedExoticComponent<ViewProps>;
210
- Label: react.NamedExoticComponent<ControlLabelProps>;
211
- Error: react.NamedExoticComponent<ControlErrorLabelProps>;
212
- Addon: react.NamedExoticComponent<ControlAddonProps>;
213
- Input: react.NamedExoticComponent<ControlInputProps>;
214
- Placeholder: react.NamedExoticComponent<ControlPlaceholderProps>;
215
- Value: react.NamedExoticComponent<ControlValueProps>;
216
- Loader: react.NamedExoticComponent<object>;
206
+ Container: react.MemoExoticComponent<(props: ControlContainerProps) => react_jsx_runtime.JSX.Element>;
207
+ Provider: react.MemoExoticComponent<(props: react.PropsWithChildren<ControlContextData>) => react_jsx_runtime.JSX.Element>;
208
+ Root: react.MemoExoticComponent<(props: ViewProps) => react_jsx_runtime.JSX.Element>;
209
+ Label: react.MemoExoticComponent<(props: ControlLabelProps) => react_jsx_runtime.JSX.Element | null>;
210
+ Error: react.MemoExoticComponent<(props: ControlErrorLabelProps) => react_jsx_runtime.JSX.Element | null>;
211
+ Addon: react.MemoExoticComponent<(props: ControlAddonProps) => react_jsx_runtime.JSX.Element | null>;
212
+ Input: react.MemoExoticComponent<(props: ControlInputProps) => react_jsx_runtime.JSX.Element>;
213
+ Placeholder: react.MemoExoticComponent<(props: ControlPlaceholderProps) => react_jsx_runtime.JSX.Element>;
214
+ Value: react.MemoExoticComponent<(props: ControlValueProps) => react_jsx_runtime.JSX.Element>;
215
+ Loader: react.MemoExoticComponent<() => react_jsx_runtime.JSX.Element>;
217
216
  };
218
217
 
219
218
  declare function useControlContext(): ControlContextData;
package/dist/index.js CHANGED
@@ -478,7 +478,7 @@ function themedStyles(theme, props) {
478
478
  // src/components/atoms/icon-button.tsx
479
479
  import { memo as memo5, useMemo as useMemo5 } from "react";
480
480
  import { StyleSheet as StyleSheet6 } from "react-native";
481
- import { Icon } from "@impulse-ui-native/icon";
481
+ import { Icon } from "@impulse-ui-native/icon/components/icon";
482
482
  import { useThemedStyles as useThemedStyles2 } from "@impulse-ui-native/theme";
483
483
  import { jsx as jsx6 } from "react/jsx-runtime";
484
484
  var IconButton = memo5(function IconButton2({
@@ -526,7 +526,8 @@ function themedStyles2(theme, props) {
526
526
  // src/components/atoms/tag.tsx
527
527
  import { memo as memo6, useMemo as useMemo6 } from "react";
528
528
  import { StyleSheet as StyleSheet7, View as View3 } from "react-native";
529
- import { Icon as Icon2, XCircleIcon } from "@impulse-ui-native/icon";
529
+ import { Icon as Icon2 } from "@impulse-ui-native/icon/components/icon";
530
+ import { XCircleIcon } from "@impulse-ui-native/icon/icons/x-circle";
530
531
  import { useThemedStyles as useThemedStyles3 } from "@impulse-ui-native/theme";
531
532
  import { jsx as jsx7, jsxs } from "react/jsx-runtime";
532
533
  var Tag = memo6(function Tag2({
@@ -603,7 +604,7 @@ function themedStyles3(theme, props) {
603
604
  // src/components/controls/addon.tsx
604
605
  import { memo as memo8, useMemo as useMemo7 } from "react";
605
606
  import { StyleSheet as StyleSheet8 } from "react-native";
606
- import { Icon as Icon3 } from "@impulse-ui-native/icon";
607
+ import { Icon as Icon3 } from "@impulse-ui-native/icon/components/icon";
607
608
  import {
608
609
  useComponentsTokens,
609
610
  useThemedStyles as useThemedStyles4
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/atoms/view.tsx","../src/components/atoms/safe-area-view.tsx","../src/constants/safe-area-view.constants.ts","../src/constants/control-container.constants.ts","../src/hocs/create-preset.hoc.tsx","../src/components/atoms/typography.tsx","../src/components/atoms/button.tsx","../src/components/atoms/pressable.tsx","../src/components/atoms/icon-button.tsx","../src/components/atoms/tag.tsx","../src/components/controls/addon.tsx","../src/components/controls/provider.tsx","../src/components/controls/container.tsx","../src/components/controls/error.tsx","../src/components/controls/input.tsx","../src/components/controls/label.tsx","../src/components/controls/loader.tsx","../src/components/controls/placeholder.tsx","../src/components/controls/root.tsx","../src/components/controls/value.tsx","../src/components/controls/control.tsx"],"sourcesContent":["import { forwardRef, memo, useMemo } from \"react\";\r\nimport { View as NativeView, StyleSheet } from \"react-native\";\r\n\r\nimport {\r\n getShadowStyle,\r\n useColors,\r\n useStyleProps,\r\n} from \"@impulse-ui-native/theme\";\r\n\r\nimport { ViewProps } from \"../../types\";\r\n\r\nexport const View = memo(\r\n forwardRef<NativeView, ViewProps>(function View(props: ViewProps, ref) {\r\n const { style, shadow, shadowPosition, ...rest } = props;\r\n\r\n const colors = useColors();\r\n const extractedStyleProps = useStyleProps(props);\r\n\r\n const viewStyle = useMemo(() => {\r\n return StyleSheet.flatten([\r\n getShadowStyle(shadow, shadowPosition, colors),\r\n extractedStyleProps,\r\n style,\r\n ]);\r\n }, [extractedStyleProps, style, shadow, shadowPosition, colors]);\r\n\r\n return <NativeView {...rest} style={viewStyle} ref={ref} />;\r\n }),\r\n);\r\n","import { memo, useCallback, useMemo } from \"react\";\r\nimport { StyleSheet, ViewStyle } from \"react-native\";\r\nimport {\r\n Edge,\r\n EdgeMode,\r\n EdgeRecord,\r\n useSafeAreaInsets,\r\n} from \"react-native-safe-area-context\";\r\n\r\nimport { EdgeToShorthandKeyMap, EdgeToSpacingKeyMap } from \"../../constants\";\r\nimport { SafeAreaViewProps } from \"../../types\";\r\nimport { View } from \"./view\";\r\n\r\nexport const SafeAreaView = memo(function SafeAreaView(\r\n props: SafeAreaViewProps,\r\n) {\r\n const { edges, mode = \"padding\", style, ...rest } = props;\r\n const insets = useSafeAreaInsets();\r\n\r\n const flatenedStyle = useMemo(() => {\r\n return StyleSheet.flatten(style);\r\n }, [style]);\r\n\r\n const nativeEdges = useMemo<Record<Edge, EdgeMode>>(() => {\r\n if (!edges) {\r\n return {\r\n top: \"additive\",\r\n bottom: \"additive\",\r\n left: \"additive\",\r\n right: \"additive\",\r\n };\r\n }\r\n\r\n let computedEdges: EdgeRecord;\r\n\r\n if (Array.isArray(edges)) {\r\n computedEdges = edges.reduce<EdgeRecord>((acc, current: Edge) => {\r\n acc[current] = \"additive\";\r\n\r\n return acc;\r\n }, {});\r\n } else {\r\n computedEdges = edges as EdgeRecord;\r\n }\r\n\r\n return {\r\n top: computedEdges.top ?? \"off\",\r\n bottom: computedEdges.bottom ?? \"off\",\r\n left: computedEdges.left ?? \"off\",\r\n right: computedEdges.right ?? \"off\",\r\n };\r\n }, [edges]);\r\n\r\n const getSpacingKey = useCallback(\r\n (edge: Edge): keyof ViewStyle => `${mode}${EdgeToSpacingKeyMap[edge]}`,\r\n [mode],\r\n );\r\n\r\n const getSpacingForEdge = useCallback(\r\n (edge: Edge): number => {\r\n const shorthand: keyof ViewStyle = `${mode}${EdgeToShorthandKeyMap[edge]}`;\r\n const spacing: keyof ViewStyle = getSpacingKey(edge);\r\n\r\n return Number(\r\n flatenedStyle?.[spacing] ??\r\n flatenedStyle?.[shorthand] ??\r\n flatenedStyle?.[mode] ??\r\n 0,\r\n );\r\n },\r\n [flatenedStyle, getSpacingKey, mode],\r\n );\r\n\r\n const resolveEdge = useCallback(\r\n (inset: number, current: number, edgeMode: EdgeMode) => {\r\n if (edgeMode === \"off\") {\r\n return current;\r\n }\r\n\r\n if (edgeMode === \"maximum\") {\r\n return Math.max(inset, current);\r\n }\r\n\r\n return inset + current;\r\n },\r\n [],\r\n );\r\n\r\n const computedStyle = useMemo(() => {\r\n const insetsStyle: ViewStyle = {\r\n [getSpacingKey(\"top\")]: resolveEdge(\r\n insets.top,\r\n getSpacingForEdge(\"top\"),\r\n nativeEdges.top,\r\n ),\r\n [getSpacingKey(\"bottom\")]: resolveEdge(\r\n insets.bottom,\r\n getSpacingForEdge(\"bottom\"),\r\n nativeEdges.bottom,\r\n ),\r\n [getSpacingKey(\"left\")]: resolveEdge(\r\n insets.left,\r\n getSpacingForEdge(\"left\"),\r\n nativeEdges.left,\r\n ),\r\n [getSpacingKey(\"right\")]: resolveEdge(\r\n insets.right,\r\n getSpacingForEdge(\"right\"),\r\n nativeEdges.right,\r\n ),\r\n };\r\n\r\n return StyleSheet.flatten([style, insetsStyle]);\r\n }, [\r\n insets,\r\n nativeEdges,\r\n style,\r\n resolveEdge,\r\n getSpacingKey,\r\n getSpacingForEdge,\r\n ]);\r\n\r\n return <View style={computedStyle} {...rest} />;\r\n});\r\n","export const EdgeToSpacingKeyMap = {\r\n top: \"Top\",\r\n bottom: \"Bottom\",\r\n left: \"Left\",\r\n right: \"Right\",\r\n} as const;\r\n\r\nexport const EdgeToShorthandKeyMap = {\r\n top: \"Vertical\",\r\n bottom: \"Vertical\",\r\n left: \"Horizontal\",\r\n right: \"Horizontal\",\r\n} as const;\r\n","import { ComponentSize } from \"@impulse-ui-native/theme\";\r\n\r\nexport const ControlContainerHeight: Record<ComponentSize, number> = {\r\n small: 36,\r\n medium: 44,\r\n large: 52,\r\n};\r\n\r\nexport const ControlFontSize: Record<ComponentSize, number> = {\r\n small: 14,\r\n medium: 16,\r\n large: 18,\r\n};\r\n","import { memo, useMemo } from \"react\";\r\nimport { StyleSheet, Text, TextStyle } from \"react-native\";\r\n\r\nimport {\r\n AppTheme,\r\n TypographyPresetKey,\r\n TypographyProps,\r\n useStyleProps,\r\n useTheme,\r\n} from \"@impulse-ui-native/theme\";\r\n\r\nimport { TextProps } from \"../types\";\r\n\r\nconst numericFontVariant: TextStyle[\"fontVariant\"] = [\"tabular-nums\"];\r\nconst defaultFontVariant: TextStyle[\"fontVariant\"] = [];\r\n\r\nexport function createPreset(\r\n config: (theme: AppTheme) => TypographyProps,\r\n key: TypographyPresetKey,\r\n) {\r\n const Component = (props: TextProps) => {\r\n const { style, numeric, fontStyle, fontWeight, ...rest } = props;\r\n\r\n const theme = useTheme();\r\n const extractedStyleProps = useStyleProps(props);\r\n\r\n const typographyStyle = useMemo(() => {\r\n const themedConfig = config(theme);\r\n\r\n const resolvedFontStyle = fontStyle ?? themedConfig.fontStyle ?? \"normal\";\r\n const resolvedFontWeight = fontWeight ?? themedConfig.fontWeight ?? 400;\r\n\r\n const fontFamily =\r\n theme.fontFamily[resolvedFontStyle][resolvedFontWeight];\r\n\r\n return StyleSheet.flatten([\r\n themedConfig,\r\n extractedStyleProps,\r\n {\r\n fontFamily,\r\n fontVariant: numeric ? numericFontVariant : defaultFontVariant,\r\n },\r\n style,\r\n ]);\r\n }, [theme, extractedStyleProps, style, numeric, fontStyle, fontWeight]);\r\n\r\n return <Text {...rest} style={typographyStyle} />;\r\n };\r\n\r\n Component.displayName = `Typography.${key}`;\r\n\r\n return memo(Component);\r\n}\r\n","import { createPreset } from \"../../hocs\";\r\n\r\nexport const Typography = {\r\n Master: createPreset(\r\n (theme) => ({ fontWeight: theme.fontWeight.regular }),\r\n \"Master\",\r\n ),\r\n\r\n DisplayLarge: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.bold,\r\n fontSize: theme.fontSize.colossal,\r\n lineHeight: theme.lineHeight.colossal,\r\n }),\r\n \"DisplayLarge\",\r\n ),\r\n\r\n DisplayMedium: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.bold,\r\n fontSize: theme.fontSize.giant,\r\n lineHeight: theme.lineHeight.giant,\r\n }),\r\n \"DisplayMedium\",\r\n ),\r\n\r\n DisplaySmall: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.semiBold,\r\n fontSize: theme.fontSize.huge,\r\n lineHeight: theme.lineHeight.huge,\r\n }),\r\n \"DisplaySmall\",\r\n ),\r\n\r\n Title1: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.bold,\r\n fontSize: theme.fontSize.xxxl,\r\n lineHeight: theme.lineHeight.xxxl,\r\n }),\r\n \"Title1\",\r\n ),\r\n\r\n Title2: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.bold,\r\n fontSize: theme.fontSize.xxl,\r\n lineHeight: theme.lineHeight.xxl,\r\n }),\r\n \"Title2\",\r\n ),\r\n\r\n Title3: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.semiBold,\r\n fontSize: theme.fontSize.xl,\r\n lineHeight: theme.lineHeight.xl,\r\n }),\r\n \"Title3\",\r\n ),\r\n\r\n Title4: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.semiBold,\r\n fontSize: theme.fontSize.lg,\r\n lineHeight: theme.lineHeight.lg,\r\n }),\r\n \"Title4\",\r\n ),\r\n\r\n Title5: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.semiBold,\r\n fontSize: theme.fontSize.md,\r\n lineHeight: theme.lineHeight.md,\r\n }),\r\n \"Title5\",\r\n ),\r\n\r\n Title6: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.semiBold,\r\n fontSize: theme.fontSize.sm,\r\n lineHeight: theme.lineHeight.sm,\r\n }),\r\n \"Title6\",\r\n ),\r\n\r\n Subtitle1: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.medium,\r\n fontSize: theme.fontSize.md,\r\n lineHeight: theme.lineHeight.lg,\r\n }),\r\n \"Subtitle1\",\r\n ),\r\n\r\n Subtitle2: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.regular,\r\n fontSize: theme.fontSize.sm,\r\n lineHeight: theme.lineHeight.sm,\r\n }),\r\n \"Subtitle2\",\r\n ),\r\n\r\n BodyLarge: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.regular,\r\n fontSize: theme.fontSize.md,\r\n lineHeight: theme.lineHeight.lg,\r\n }),\r\n \"BodyLarge\",\r\n ),\r\n\r\n Body: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.regular,\r\n fontSize: theme.fontSize.sm,\r\n lineHeight: theme.lineHeight.sm,\r\n }),\r\n \"Body\",\r\n ),\r\n\r\n BodySmall: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.regular,\r\n fontSize: theme.fontSize.xsm,\r\n lineHeight: theme.lineHeight.xsm,\r\n }),\r\n \"BodySmall\",\r\n ),\r\n\r\n Caption: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.regular,\r\n fontSize: theme.fontSize.xs,\r\n lineHeight: theme.lineHeight.xs,\r\n }),\r\n \"Caption\",\r\n ),\r\n\r\n Label: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.medium,\r\n fontSize: theme.fontSize.xsm,\r\n lineHeight: theme.lineHeight.xsm,\r\n }),\r\n \"Label\",\r\n ),\r\n\r\n Overline: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.semiBold,\r\n fontSize: theme.fontSize.xs,\r\n lineHeight: theme.lineHeight.xs,\r\n textTransform: \"uppercase\",\r\n letterSpacing: 1,\r\n }),\r\n \"Overline\",\r\n ),\r\n\r\n Helper: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.regular,\r\n fontSize: theme.fontSize.xsm,\r\n lineHeight: theme.lineHeight.xsm,\r\n }),\r\n \"Helper\",\r\n ),\r\n\r\n Code: createPreset(\r\n (theme) => ({\r\n fontFamily: \"monospace\",\r\n fontSize: theme.fontSize.xsm,\r\n lineHeight: theme.lineHeight.xsm,\r\n }),\r\n \"Code\",\r\n ),\r\n\r\n Quote: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.regular,\r\n fontSize: theme.fontSize.md,\r\n lineHeight: theme.lineHeight.lg,\r\n fontStyle: \"italic\",\r\n }),\r\n \"Quote\",\r\n ),\r\n\r\n Eyebrow: createPreset(\r\n (theme) => ({\r\n fontWeight: theme.fontWeight.medium,\r\n fontSize: theme.fontSize.xs,\r\n lineHeight: theme.lineHeight.xs,\r\n textTransform: \"uppercase\",\r\n letterSpacing: 1,\r\n }),\r\n \"Eyebrow\",\r\n ),\r\n};\r\n\r\nexport type TypographyComponent = (typeof Typography)[keyof typeof Typography];\r\n","import { memo, PropsWithChildren, useMemo } from \"react\";\r\nimport { ActivityIndicator, StyleSheet } from \"react-native\";\r\n\r\nimport { AppTheme, useThemedStyles } from \"@impulse-ui-native/theme\";\r\n\r\nimport { ButtonProps, ButtonThemeProps } from \"../../types\";\r\nimport { Pressable } from \"./pressable\";\r\nimport { Typography } from \"./typography\";\r\n\r\nexport const Button = memo(function Button({\r\n size = \"medium\",\r\n variant = \"filled\",\r\n disabled,\r\n children,\r\n style,\r\n ...props\r\n}: PropsWithChildren<ButtonProps>) {\r\n const styles = useThemedStyles(themedStyles, { size, variant, disabled }, [\r\n size,\r\n variant,\r\n disabled,\r\n ]);\r\n\r\n const buttonStyles = useMemo(\r\n () => [styles.button, style],\r\n [styles.button, style],\r\n );\r\n\r\n const content = useMemo(() => {\r\n if (props.loading) {\r\n return <ActivityIndicator color={styles.text.color} />;\r\n }\r\n\r\n return typeof children === \"string\" ? (\r\n <Typography.Master style={styles.text}>{children}</Typography.Master>\r\n ) : (\r\n children\r\n );\r\n }, [children, props.loading, styles.text]);\r\n\r\n return (\r\n <Pressable style={buttonStyles} disabled={disabled} {...props}>\r\n {content}\r\n </Pressable>\r\n );\r\n});\r\n\r\nfunction themedStyles(theme: AppTheme, props: ButtonThemeProps) {\r\n const { size, variant, disabled } = props;\r\n\r\n const buttonTokens = theme.components.button;\r\n const sizeTokens = buttonTokens.sizes[size];\r\n const variantTokens = buttonTokens.variants[variant];\r\n\r\n return StyleSheet.create({\r\n button: {\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n\r\n height: sizeTokens.height,\r\n paddingVertical: sizeTokens.paddingVertical,\r\n paddingHorizontal: sizeTokens.paddingHorizontal,\r\n\r\n borderWidth: buttonTokens.borderWidth,\r\n borderRadius: buttonTokens.borderRadius,\r\n\r\n borderColor: disabled\r\n ? variantTokens.disabledBorderColor\r\n : variantTokens.borderColor,\r\n\r\n backgroundColor: disabled\r\n ? variantTokens.disabledBackgroundColor\r\n : variantTokens.backgroundColor,\r\n },\r\n\r\n text: {\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n\r\n fontSize: sizeTokens.fontSize,\r\n\r\n color: disabled ? variantTokens.disabledColor : variantTokens.color,\r\n },\r\n });\r\n}\r\n","import { PropsWithChildren, useCallback } from \"react\";\r\nimport {\r\n PressableStateCallbackType,\r\n Pressable as RNPressable,\r\n StyleProp,\r\n StyleSheet,\r\n ViewStyle,\r\n} from \"react-native\";\r\n\r\nimport {\r\n getShadowStyle,\r\n useColors,\r\n useStyleProps,\r\n} from \"@impulse-ui-native/theme\";\r\n\r\nimport { PressableCoreProps } from \"../../types\";\r\n\r\nexport const Pressable = function PressableCore({\r\n children,\r\n disabled,\r\n pressedStyle,\r\n style,\r\n ...props\r\n}: PropsWithChildren<PressableCoreProps>) {\r\n const colors = useColors();\r\n const extractedStyleProps = useStyleProps(props);\r\n\r\n const pressableStyles = useCallback(\r\n (state: PressableStateCallbackType): StyleProp<ViewStyle> => {\r\n let overrideStyle: StyleProp<ViewStyle>;\r\n\r\n if (typeof style === \"function\") {\r\n overrideStyle = style(state);\r\n } else {\r\n overrideStyle = style;\r\n }\r\n\r\n return StyleSheet.flatten([\r\n { opacity: disabled || state.pressed ? 0.6 : 1 },\r\n getShadowStyle(props.shadow, props.shadowPosition, colors),\r\n extractedStyleProps,\r\n overrideStyle,\r\n state.pressed ? pressedStyle : undefined,\r\n ]);\r\n },\r\n [\r\n style,\r\n pressedStyle,\r\n disabled,\r\n extractedStyleProps,\r\n props.shadow,\r\n props.shadowPosition,\r\n colors,\r\n ],\r\n );\r\n\r\n return (\r\n <RNPressable {...props} style={pressableStyles} disabled={disabled}>\r\n {children}\r\n </RNPressable>\r\n );\r\n};\r\n","import { memo, PropsWithChildren, useMemo } from \"react\";\r\nimport { StyleSheet } from \"react-native\";\r\n\r\nimport { Icon } from \"@impulse-ui-native/icon\";\r\nimport { AppTheme, useThemedStyles } from \"@impulse-ui-native/theme\";\r\n\r\nimport { IconButtonProps, IconButtonThemeProps } from \"../../types\";\r\nimport { Pressable } from \"./pressable\";\r\n\r\nexport const IconButton = memo(function IconButton({\r\n size = \"medium\",\r\n variant = \"filled\",\r\n disabled,\r\n style,\r\n icon,\r\n ...props\r\n}: PropsWithChildren<IconButtonProps>) {\r\n const styles = useThemedStyles(themedStyles, { size, variant, disabled }, [\r\n size,\r\n variant,\r\n disabled,\r\n ]);\r\n\r\n const iconButtonStyles = useMemo(\r\n () => [styles.button, style],\r\n [styles.button, style],\r\n );\r\n\r\n return (\r\n <Pressable style={iconButtonStyles} disabled={disabled} {...props}>\r\n <Icon size={size} icon={icon} color={styles.icon.color} />\r\n </Pressable>\r\n );\r\n});\r\n\r\nfunction themedStyles(theme: AppTheme, props: IconButtonThemeProps) {\r\n const { size, variant, disabled } = props;\r\n\r\n const iconButtonTokens = theme.components.iconButton;\r\n const sizeTokens = iconButtonTokens.sizes[size];\r\n const variantTokens = iconButtonTokens.variants[variant];\r\n\r\n return StyleSheet.create({\r\n button: {\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n\r\n height: sizeTokens.size,\r\n width: sizeTokens.size,\r\n padding: sizeTokens.padding,\r\n\r\n borderWidth: iconButtonTokens.borderWidth,\r\n borderRadius: iconButtonTokens.borderRadius,\r\n\r\n borderColor: disabled\r\n ? variantTokens.disabledBorderColor\r\n : variantTokens.borderColor,\r\n\r\n backgroundColor: disabled\r\n ? variantTokens.disabledBackgroundColor\r\n : variantTokens.backgroundColor,\r\n },\r\n\r\n icon: {\r\n color: disabled ? variantTokens.disabledColor : variantTokens.color,\r\n },\r\n });\r\n}\r\n","import { memo, useMemo } from \"react\";\r\nimport { StyleSheet, View } from \"react-native\";\r\n\r\nimport { Icon, XCircleIcon } from \"@impulse-ui-native/icon\";\r\nimport { AppTheme, useThemedStyles } from \"@impulse-ui-native/theme\";\r\n\r\nimport { TagProps, TagThemeProps } from \"../../types\";\r\nimport { Pressable } from \"./pressable\";\r\nimport { Typography } from \"./typography\";\r\n\r\nexport const Tag = memo(function Tag({\r\n label,\r\n size = \"medium\",\r\n variant = \"filled\",\r\n color = \"primary\",\r\n closable,\r\n disabled,\r\n onClose,\r\n onPress,\r\n}: TagProps) {\r\n const styles = useThemedStyles(\r\n themedStyles,\r\n {\r\n size,\r\n variant,\r\n disabled,\r\n color,\r\n },\r\n [size, variant, disabled, color],\r\n );\r\n\r\n const Container = useMemo(() => {\r\n if (onPress) {\r\n return Pressable;\r\n }\r\n\r\n return View;\r\n }, [onPress]);\r\n\r\n const showClose =\r\n (closable || size === \"medium\" || size === \"large\") && !disabled && onClose;\r\n\r\n return (\r\n <Container onPress={onPress} disabled={disabled} style={styles.container}>\r\n <Typography.Caption style={styles.label}>{label}</Typography.Caption>\r\n\r\n {showClose ? (\r\n <Pressable onPress={onClose} hitSlop={10}>\r\n <Icon\r\n icon={XCircleIcon}\r\n size=\"small\"\r\n color={styles.icon.color}\r\n style={styles.icon}\r\n />\r\n </Pressable>\r\n ) : null}\r\n </Container>\r\n );\r\n});\r\n\r\nfunction themedStyles(theme: AppTheme, props: TagThemeProps) {\r\n const { size, variant, color, disabled } = props;\r\n\r\n const tagTokens = theme.components.tag;\r\n const sizeTokens = tagTokens.sizes[size];\r\n const variantTokens = tagTokens.colors[color][variant];\r\n\r\n return StyleSheet.create({\r\n container: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n alignSelf: \"flex-start\",\r\n\r\n height: sizeTokens.height,\r\n paddingHorizontal: sizeTokens.paddingHorizontal,\r\n minWidth: sizeTokens.minWidth,\r\n\r\n borderRadius: tagTokens.borderRadius,\r\n gap: tagTokens.gap,\r\n borderWidth: tagTokens.borderWidth,\r\n\r\n borderColor: disabled\r\n ? variantTokens.disabledBorderColor\r\n : variantTokens.borderColor,\r\n\r\n backgroundColor: disabled\r\n ? variantTokens.disabledBackgroundColor\r\n : variantTokens.backgroundColor,\r\n },\r\n\r\n label: {\r\n fontSize: sizeTokens.fontSize,\r\n color: disabled ? variantTokens.disabledColor : variantTokens.color,\r\n },\r\n\r\n icon: {\r\n marginLeft: tagTokens.iconMarginLeft,\r\n color: disabled ? variantTokens.disabledColor : variantTokens.color,\r\n },\r\n });\r\n}\r\n","import { memo, useMemo } from \"react\";\r\nimport { StyleSheet } from \"react-native\";\r\n\r\nimport { Icon } from \"@impulse-ui-native/icon\";\r\nimport {\r\n AppTheme,\r\n useComponentsTokens,\r\n useThemedStyles,\r\n} from \"@impulse-ui-native/theme\";\r\n\r\nimport { ControlAddonProps } from \"../../types\";\r\nimport { Pressable, View } from \"../atoms\";\r\nimport { useControlContext } from \"./provider\";\r\n\r\nexport const ControlAddon = memo(function ControlAddon(\r\n props: ControlAddonProps,\r\n) {\r\n const { icon: AddonIcon, onPress, Content, style, ...rest } = props;\r\n\r\n const { disabled, error } = useControlContext();\r\n\r\n const tokens = useComponentsTokens();\r\n\r\n const styles = useThemedStyles(\r\n themedStyles,\r\n {\r\n disabled,\r\n error,\r\n },\r\n [disabled, error],\r\n );\r\n\r\n const Container = useMemo(() => {\r\n if (onPress) {\r\n return Pressable;\r\n }\r\n\r\n return View;\r\n }, [onPress]);\r\n\r\n const children = useMemo(() => {\r\n if (Content) {\r\n return <Content />;\r\n }\r\n\r\n if (AddonIcon) {\r\n return <Icon color={styles.icon.color} icon={AddonIcon} />;\r\n }\r\n\r\n return null;\r\n }, [AddonIcon, Content, styles.icon.color]);\r\n\r\n const containerStyle = useMemo(\r\n () => [styles.container, style],\r\n [styles.container, style],\r\n );\r\n\r\n if (!children) {\r\n return null;\r\n }\r\n\r\n return (\r\n <Container\r\n {...rest}\r\n style={containerStyle}\r\n hitSlop={tokens.controlAddon.hitSlop}\r\n onPress={onPress}\r\n disabled={disabled}\r\n >\r\n {children}\r\n </Container>\r\n );\r\n});\r\n\r\nfunction themedStyles(\r\n theme: AppTheme,\r\n props: {\r\n disabled?: boolean;\r\n error?: string;\r\n },\r\n) {\r\n const { disabled, error } = props;\r\n\r\n const controlAddonTokens = theme.components.controlAddon;\r\n\r\n return StyleSheet.create({\r\n container: {\r\n marginHorizontal: controlAddonTokens.marginHorizontal,\r\n },\r\n\r\n icon: {\r\n color: disabled\r\n ? controlAddonTokens.disabledIconColor\r\n : error\r\n ? controlAddonTokens.errorIconColor\r\n : controlAddonTokens.iconColor,\r\n },\r\n });\r\n}\r\n","import { createContext, memo, PropsWithChildren, useContext } from \"react\";\r\n\r\nimport { ControlContextData } from \"../../types\";\r\n\r\nconst ControlContext = createContext<ControlContextData | undefined>(undefined);\r\n\r\nexport const ControlProvider = memo(function ControlProvider(\r\n props: PropsWithChildren<ControlContextData>,\r\n) {\r\n const { children, ...context } = props;\r\n\r\n return (\r\n <ControlContext.Provider value={context}>\r\n {children}\r\n </ControlContext.Provider>\r\n );\r\n});\r\n\r\nexport function useControlContext() {\r\n const context = useContext(ControlContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useControlContext must be used within ControlProvider\");\r\n }\r\n\r\n return context;\r\n}\r\n","import { memo, useMemo } from \"react\";\r\nimport { StyleSheet } from \"react-native\";\r\n\r\nimport {\r\n AppTheme,\r\n ComponentSize,\r\n ComponentVariant,\r\n useThemedStyles,\r\n} from \"@impulse-ui-native/theme\";\r\n\r\nimport { ControlContainerProps } from \"../../types\";\r\nimport { View } from \"../atoms/view\";\r\nimport { useControlContext } from \"./provider\";\r\n\r\nexport const ControlContainer = memo(function ControlContainer(\r\n props: ControlContainerProps,\r\n) {\r\n const { style, ...rest } = props;\r\n\r\n const { size, variant, disabled, error } = useControlContext();\r\n\r\n const styles = useThemedStyles(\r\n themedStyles,\r\n {\r\n size,\r\n variant,\r\n disabled,\r\n error,\r\n },\r\n [size, variant, disabled, error],\r\n );\r\n\r\n const containerStyle = useMemo(\r\n () => [styles.inputContainer, style],\r\n [styles.inputContainer, style],\r\n );\r\n\r\n return <View style={containerStyle} {...rest} />;\r\n});\r\n\r\nfunction themedStyles(\r\n theme: AppTheme,\r\n {\r\n size,\r\n variant,\r\n disabled,\r\n error,\r\n }: {\r\n size: ComponentSize;\r\n variant: ComponentVariant;\r\n disabled?: boolean;\r\n error?: string;\r\n },\r\n) {\r\n const controlContainerTokens = theme.components.controlContainer;\r\n const sizeTokens = controlContainerTokens.sizes[size];\r\n const variantTokens = controlContainerTokens.variants[variant];\r\n\r\n return StyleSheet.create({\r\n inputContainer: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n\r\n height: sizeTokens.height,\r\n paddingHorizontal: sizeTokens.paddingHorizontal,\r\n\r\n borderRadius: controlContainerTokens.borderRadius,\r\n borderWidth: controlContainerTokens.borderWidth,\r\n\r\n opacity: disabled ? controlContainerTokens.disabledOpacity : 1,\r\n\r\n backgroundColor: disabled\r\n ? variantTokens.disabledBackgroundColor\r\n : variantTokens.backgroundColor,\r\n\r\n borderColor: error\r\n ? variantTokens.errorBorderColor\r\n : disabled\r\n ? variantTokens.disabledBorderColor\r\n : variantTokens.borderColor,\r\n\r\n borderBottomColor: error\r\n ? variantTokens.errorBorderBottomColor\r\n : disabled\r\n ? variantTokens.disabledBorderBottomColor\r\n : variantTokens.borderBottomColor,\r\n },\r\n });\r\n}\r\n","import { memo, useMemo } from \"react\";\r\nimport { StyleSheet } from \"react-native\";\r\n\r\nimport { AppTheme, useThemedStyles } from \"@impulse-ui-native/theme\";\r\n\r\nimport { ControlErrorLabelProps } from \"../../types\";\r\nimport { Typography } from \"../atoms\";\r\nimport { useControlContext } from \"./provider\";\r\n\r\nexport const ControlError = memo(function ControlError(\r\n props: ControlErrorLabelProps,\r\n) {\r\n const { style, ...rest } = props;\r\n\r\n const { error } = useControlContext();\r\n\r\n const styles = useThemedStyles(themedStyles);\r\n\r\n const errorStyle = useMemo(\r\n () => [styles.error, style],\r\n [styles.error, style],\r\n );\r\n\r\n if (!Boolean(error)) {\r\n return null;\r\n }\r\n\r\n return (\r\n <Typography.Caption {...rest} style={errorStyle}>\r\n {error}\r\n </Typography.Caption>\r\n );\r\n});\r\n\r\nfunction themedStyles(theme: AppTheme) {\r\n const controlErrorTokens = theme.components.controlError;\r\n\r\n return StyleSheet.create({\r\n error: {\r\n marginTop: controlErrorTokens.marginTop,\r\n color: controlErrorTokens.color,\r\n fontSize: controlErrorTokens.fontSize,\r\n },\r\n });\r\n}\r\n","import { memo, useMemo } from \"react\";\r\nimport { StyleSheet, TextInput } from \"react-native\";\r\n\r\nimport {\r\n AppTheme,\r\n ComponentSize,\r\n ComponentVariant,\r\n useThemedStyles,\r\n} from \"@impulse-ui-native/theme\";\r\n\r\nimport { ControlInputProps } from \"../../types\";\r\nimport { useControlContext } from \"./provider\";\r\n\r\nexport const ControlInput = memo(function ControlInput(\r\n props: ControlInputProps,\r\n) {\r\n const { onPress, style, ...rest } = props;\r\n\r\n const { size, variant, disabled, error } = useControlContext();\r\n\r\n const styles = useThemedStyles(\r\n themedStyles,\r\n {\r\n size,\r\n variant,\r\n disabled,\r\n error,\r\n },\r\n [size, variant, disabled, error],\r\n );\r\n\r\n const inputStyles = useMemo(\r\n () => [styles.input, style],\r\n [styles.input, style],\r\n );\r\n\r\n return (\r\n <TextInput\r\n {...rest}\r\n style={inputStyles}\r\n placeholderTextColor={styles.placeholder.color}\r\n editable={!disabled}\r\n />\r\n );\r\n});\r\n\r\nfunction themedStyles(\r\n theme: AppTheme,\r\n {\r\n size,\r\n variant,\r\n disabled,\r\n error,\r\n }: {\r\n size: ComponentSize;\r\n variant: ComponentVariant;\r\n disabled?: boolean;\r\n error?: string;\r\n },\r\n) {\r\n const controlInputTokens = theme.components.controlInput;\r\n const sizeTokens = controlInputTokens.sizes[size];\r\n const variantTokens = controlInputTokens.variants[variant];\r\n\r\n const color = disabled\r\n ? variantTokens.disabledColor\r\n : error\r\n ? variantTokens.errorColor\r\n : variantTokens.color;\r\n\r\n const placeholderColor = disabled\r\n ? variantTokens.disabledPlaceholderColor\r\n : error\r\n ? variantTokens.errorPlaceholderColor\r\n : variantTokens.placeholderColor;\r\n\r\n return StyleSheet.create({\r\n input: {\r\n flex: controlInputTokens.flex,\r\n color,\r\n fontSize: sizeTokens.fontSize,\r\n fontFamily: controlInputTokens.fontFamily,\r\n paddingHorizontal: controlInputTokens.paddingHorizontal,\r\n height: \"100%\",\r\n },\r\n\r\n placeholder: {\r\n color: placeholderColor,\r\n },\r\n });\r\n}\r\n","import { memo, useMemo } from \"react\";\r\nimport { StyleSheet } from \"react-native\";\r\n\r\nimport { AppTheme, useThemedStyles } from \"@impulse-ui-native/theme\";\r\n\r\nimport { ControlLabelProps } from \"../../types\";\r\nimport { Typography } from \"../atoms\";\r\nimport { useControlContext } from \"./provider\";\r\n\r\nexport const ControlLabel = memo(function ControlLabel(\r\n props: ControlLabelProps,\r\n) {\r\n const { children, disabled, style, ...rest } = props;\r\n\r\n const { error } = useControlContext();\r\n\r\n const styles = useThemedStyles(\r\n themedStyles,\r\n {\r\n disabled,\r\n error,\r\n },\r\n [disabled, error],\r\n );\r\n\r\n const labelStyle = useMemo(\r\n () => [styles.label, style],\r\n [styles.label, style],\r\n );\r\n\r\n if (!children) {\r\n return null;\r\n }\r\n\r\n return (\r\n <Typography.Label {...rest} style={labelStyle}>\r\n {children}\r\n </Typography.Label>\r\n );\r\n});\r\n\r\nfunction themedStyles(\r\n theme: AppTheme,\r\n props: {\r\n disabled?: boolean;\r\n error?: string;\r\n },\r\n) {\r\n const { disabled, error } = props;\r\n\r\n const controlLabelTokens = theme.components.controlLabel;\r\n\r\n const color = disabled\r\n ? controlLabelTokens.disabledColor\r\n : error\r\n ? controlLabelTokens.errorColor\r\n : controlLabelTokens.color;\r\n\r\n return StyleSheet.create({\r\n label: {\r\n marginBottom: controlLabelTokens.marginBottom,\r\n fontSize: controlLabelTokens.fontSize,\r\n color,\r\n },\r\n });\r\n}\r\n","import { memo } from \"react\";\r\nimport { ActivityIndicator } from \"react-native\";\r\n\r\nexport const ControlLoader = memo(function ControlLoader() {\r\n return <ActivityIndicator />;\r\n});\r\n","import { memo, useMemo } from \"react\";\r\nimport { StyleSheet } from \"react-native\";\r\n\r\nimport {\r\n AppTheme,\r\n ComponentSize,\r\n ComponentVariant,\r\n useThemedStyles,\r\n} from \"@impulse-ui-native/theme\";\r\n\r\nimport { ControlPlaceholderProps } from \"../../types\";\r\nimport { Typography } from \"../atoms\";\r\nimport { useControlContext } from \"./provider\";\r\n\r\nexport const ControlPlaceholder = memo(function ControlPlaceholder(\r\n props: ControlPlaceholderProps,\r\n) {\r\n const { style, ...rest } = props;\r\n\r\n const { size, variant, disabled, error } = useControlContext();\r\n\r\n const styles = useThemedStyles(\r\n themedStyles,\r\n {\r\n size,\r\n variant,\r\n disabled,\r\n error,\r\n },\r\n [size, variant, disabled, error],\r\n );\r\n\r\n const placeholderStyle = useMemo(\r\n () => [styles.placeholder, style],\r\n [styles.placeholder, style],\r\n );\r\n\r\n return (\r\n <Typography.Master numberOfLines={1} {...rest} style={placeholderStyle} />\r\n );\r\n});\r\n\r\nfunction themedStyles(\r\n theme: AppTheme,\r\n {\r\n size,\r\n variant,\r\n disabled,\r\n error,\r\n }: {\r\n size: ComponentSize;\r\n variant: ComponentVariant;\r\n disabled?: boolean;\r\n error?: string;\r\n },\r\n) {\r\n const controlInputTokens = theme.components.controlInput;\r\n const sizeTokens = controlInputTokens.sizes[size];\r\n const variantTokens = controlInputTokens.variants[variant];\r\n\r\n const color = disabled\r\n ? variantTokens.disabledPlaceholderColor\r\n : error\r\n ? variantTokens.errorPlaceholderColor\r\n : variantTokens.placeholderColor;\r\n\r\n return StyleSheet.create({\r\n placeholder: {\r\n flex: controlInputTokens.flex,\r\n color,\r\n fontFamily: controlInputTokens.fontFamily,\r\n fontSize: sizeTokens.fontSize,\r\n paddingHorizontal: controlInputTokens.paddingHorizontal,\r\n },\r\n });\r\n}\r\n","import { memo, useMemo } from \"react\";\r\nimport { StyleSheet } from \"react-native\";\r\n\r\nimport { ViewProps } from \"../../types\";\r\nimport { View } from \"../atoms\";\r\n\r\nexport const ControlRoot = memo(function ControlRoot(props: ViewProps) {\r\n const { style, ...rest } = props;\r\n\r\n const containerStyle = useMemo(() => [styles.container, style], [style]);\r\n\r\n return <View {...rest} style={containerStyle} />;\r\n});\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n width: \"100%\",\r\n },\r\n});\r\n","import { memo, useMemo } from \"react\";\r\nimport { StyleSheet } from \"react-native\";\r\n\r\nimport {\r\n AppTheme,\r\n ComponentSize,\r\n useThemedStyles,\r\n} from \"@impulse-ui-native/theme\";\r\n\r\nimport { ControlValueProps } from \"../../types\";\r\nimport { Typography } from \"../atoms\";\r\nimport { useControlContext } from \"./provider\";\r\n\r\nexport const ControlValue = memo(function ControlValue(\r\n props: ControlValueProps,\r\n) {\r\n const { style, ...rest } = props;\r\n\r\n const { size } = useControlContext();\r\n\r\n const styles = useThemedStyles(themedStyles, { size }, [size]);\r\n\r\n const valueStyle = useMemo(\r\n () => [styles.value, style],\r\n [styles.value, style],\r\n );\r\n\r\n return <Typography.Master numberOfLines={1} {...rest} style={valueStyle} />;\r\n});\r\n\r\nfunction themedStyles(\r\n theme: AppTheme,\r\n {\r\n size,\r\n }: {\r\n size: ComponentSize;\r\n },\r\n) {\r\n const controlInputTokens = theme.components.controlInput;\r\n const sizeTokens = controlInputTokens.sizes[size];\r\n\r\n return StyleSheet.create({\r\n value: {\r\n flex: controlInputTokens.flex,\r\n fontFamily: controlInputTokens.fontFamily,\r\n fontSize: sizeTokens.fontSize,\r\n paddingHorizontal: controlInputTokens.paddingHorizontal,\r\n },\r\n });\r\n}\r\n","import { ControlAddon } from \"./addon\";\r\nimport { ControlContainer } from \"./container\";\r\nimport { ControlError } from \"./error\";\r\nimport { ControlInput } from \"./input\";\r\nimport { ControlLabel } from \"./label\";\r\nimport { ControlLoader } from \"./loader\";\r\nimport { ControlPlaceholder } from \"./placeholder\";\r\nimport { ControlProvider } from \"./provider\";\r\nimport { ControlRoot } from \"./root\";\r\nimport { ControlValue } from \"./value\";\r\n\r\nexport const Control = {\r\n Container: ControlContainer,\r\n Provider: ControlProvider,\r\n Root: ControlRoot,\r\n Label: ControlLabel,\r\n Error: ControlError,\r\n Addon: ControlAddon,\r\n Input: ControlInput,\r\n Placeholder: ControlPlaceholder,\r\n Value: ControlValue,\r\n Loader: ControlLoader,\r\n};\r\n"],"mappings":"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","names":["View","memo","useMemo","StyleSheet","jsx","memo","SafeAreaView","useMemo","StyleSheet","memo","useMemo","StyleSheet","useStyleProps","jsx","memo","useMemo","StyleSheet","useCallback","StyleSheet","getShadowStyle","useColors","useStyleProps","jsx","jsx","memo","Button","styles","useMemo","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","IconButton","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","useMemo","StyleSheet","View","Icon","useThemedStyles","jsx","memo","Tag","styles","useThemedStyles","themedStyles","useMemo","View","Icon","StyleSheet","memo","useMemo","StyleSheet","Icon","useThemedStyles","memo","jsx","ControlProvider","jsx","memo","ControlAddon","styles","useThemedStyles","themedStyles","useMemo","Icon","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlContainer","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlError","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlInput","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlLabel","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","ActivityIndicator","jsx","ControlLoader","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlPlaceholder","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","useMemo","StyleSheet","jsx","memo","ControlRoot","useMemo","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlValue","styles","useThemedStyles","themedStyles","useMemo","StyleSheet"]}
1
+ {"version":3,"sources":["../src/components/atoms/view.tsx","../src/components/atoms/safe-area-view.tsx","../src/constants/safe-area-view.constants.ts","../src/constants/control-container.constants.ts","../src/hocs/create-preset.hoc.tsx","../src/components/atoms/typography.tsx","../src/components/atoms/button.tsx","../src/components/atoms/pressable.tsx","../src/components/atoms/icon-button.tsx","../src/components/atoms/tag.tsx","../src/components/controls/addon.tsx","../src/components/controls/provider.tsx","../src/components/controls/container.tsx","../src/components/controls/error.tsx","../src/components/controls/input.tsx","../src/components/controls/label.tsx","../src/components/controls/loader.tsx","../src/components/controls/placeholder.tsx","../src/components/controls/root.tsx","../src/components/controls/value.tsx","../src/components/controls/control.tsx"],"sourcesContent":["import { forwardRef, memo, useMemo } from \"react\";\nimport { View as NativeView, StyleSheet } from \"react-native\";\n\nimport {\n getShadowStyle,\n useColors,\n useStyleProps,\n} from \"@impulse-ui-native/theme\";\n\nimport { ViewProps } from \"../../types\";\n\nexport const View = memo(\n forwardRef<NativeView, ViewProps>(function View(props: ViewProps, ref) {\n const { style, shadow, shadowPosition, ...rest } = props;\n\n const colors = useColors();\n const extractedStyleProps = useStyleProps(props);\n\n const viewStyle = useMemo(() => {\n return StyleSheet.flatten([\n getShadowStyle(shadow, shadowPosition, colors),\n extractedStyleProps,\n style,\n ]);\n }, [extractedStyleProps, style, shadow, shadowPosition, colors]);\n\n return <NativeView {...rest} style={viewStyle} ref={ref} />;\n }),\n);\n","import { memo, useCallback, useMemo } from \"react\";\nimport { StyleSheet, ViewStyle } from \"react-native\";\nimport {\n Edge,\n EdgeMode,\n EdgeRecord,\n useSafeAreaInsets,\n} from \"react-native-safe-area-context\";\n\nimport { EdgeToShorthandKeyMap, EdgeToSpacingKeyMap } from \"../../constants\";\nimport { SafeAreaViewProps } from \"../../types\";\nimport { View } from \"./view\";\n\nexport const SafeAreaView = memo(function SafeAreaView(\n props: SafeAreaViewProps,\n) {\n const { edges, mode = \"padding\", style, ...rest } = props;\n const insets = useSafeAreaInsets();\n\n const flatenedStyle = useMemo(() => {\n return StyleSheet.flatten(style);\n }, [style]);\n\n const nativeEdges = useMemo<Record<Edge, EdgeMode>>(() => {\n if (!edges) {\n return {\n top: \"additive\",\n bottom: \"additive\",\n left: \"additive\",\n right: \"additive\",\n };\n }\n\n let computedEdges: EdgeRecord;\n\n if (Array.isArray(edges)) {\n computedEdges = edges.reduce<EdgeRecord>((acc, current: Edge) => {\n acc[current] = \"additive\";\n\n return acc;\n }, {});\n } else {\n computedEdges = edges as EdgeRecord;\n }\n\n return {\n top: computedEdges.top ?? \"off\",\n bottom: computedEdges.bottom ?? \"off\",\n left: computedEdges.left ?? \"off\",\n right: computedEdges.right ?? \"off\",\n };\n }, [edges]);\n\n const getSpacingKey = useCallback(\n (edge: Edge): keyof ViewStyle => `${mode}${EdgeToSpacingKeyMap[edge]}`,\n [mode],\n );\n\n const getSpacingForEdge = useCallback(\n (edge: Edge): number => {\n const shorthand: keyof ViewStyle = `${mode}${EdgeToShorthandKeyMap[edge]}`;\n const spacing: keyof ViewStyle = getSpacingKey(edge);\n\n return Number(\n flatenedStyle?.[spacing] ??\n flatenedStyle?.[shorthand] ??\n flatenedStyle?.[mode] ??\n 0,\n );\n },\n [flatenedStyle, getSpacingKey, mode],\n );\n\n const resolveEdge = useCallback(\n (inset: number, current: number, edgeMode: EdgeMode) => {\n if (edgeMode === \"off\") {\n return current;\n }\n\n if (edgeMode === \"maximum\") {\n return Math.max(inset, current);\n }\n\n return inset + current;\n },\n [],\n );\n\n const computedStyle = useMemo(() => {\n const insetsStyle: ViewStyle = {\n [getSpacingKey(\"top\")]: resolveEdge(\n insets.top,\n getSpacingForEdge(\"top\"),\n nativeEdges.top,\n ),\n [getSpacingKey(\"bottom\")]: resolveEdge(\n insets.bottom,\n getSpacingForEdge(\"bottom\"),\n nativeEdges.bottom,\n ),\n [getSpacingKey(\"left\")]: resolveEdge(\n insets.left,\n getSpacingForEdge(\"left\"),\n nativeEdges.left,\n ),\n [getSpacingKey(\"right\")]: resolveEdge(\n insets.right,\n getSpacingForEdge(\"right\"),\n nativeEdges.right,\n ),\n };\n\n return StyleSheet.flatten([style, insetsStyle]);\n }, [\n insets,\n nativeEdges,\n style,\n resolveEdge,\n getSpacingKey,\n getSpacingForEdge,\n ]);\n\n return <View style={computedStyle} {...rest} />;\n});\n","export const EdgeToSpacingKeyMap = {\n top: \"Top\",\n bottom: \"Bottom\",\n left: \"Left\",\n right: \"Right\",\n} as const;\n\nexport const EdgeToShorthandKeyMap = {\n top: \"Vertical\",\n bottom: \"Vertical\",\n left: \"Horizontal\",\n right: \"Horizontal\",\n} as const;\n","import { ComponentSize } from \"@impulse-ui-native/theme\";\n\nexport const ControlContainerHeight: Record<ComponentSize, number> = {\n small: 36,\n medium: 44,\n large: 52,\n};\n\nexport const ControlFontSize: Record<ComponentSize, number> = {\n small: 14,\n medium: 16,\n large: 18,\n};\n","import { memo, useMemo } from \"react\";\nimport { StyleSheet, Text, TextStyle } from \"react-native\";\n\nimport {\n AppTheme,\n TypographyPresetKey,\n TypographyProps,\n useStyleProps,\n useTheme,\n} from \"@impulse-ui-native/theme\";\n\nimport { TextProps } from \"../types\";\n\nconst numericFontVariant: TextStyle[\"fontVariant\"] = [\"tabular-nums\"];\nconst defaultFontVariant: TextStyle[\"fontVariant\"] = [];\n\nexport function createPreset(\n config: (theme: AppTheme) => TypographyProps,\n key: TypographyPresetKey,\n) {\n const Component = (props: TextProps) => {\n const { style, numeric, fontStyle, fontWeight, ...rest } = props;\n\n const theme = useTheme();\n const extractedStyleProps = useStyleProps(props);\n\n const typographyStyle = useMemo(() => {\n const themedConfig = config(theme);\n\n const resolvedFontStyle = fontStyle ?? themedConfig.fontStyle ?? \"normal\";\n const resolvedFontWeight = fontWeight ?? themedConfig.fontWeight ?? 400;\n\n const fontFamily =\n theme.fontFamily[resolvedFontStyle][resolvedFontWeight];\n\n return StyleSheet.flatten([\n themedConfig,\n extractedStyleProps,\n {\n fontFamily,\n fontVariant: numeric ? numericFontVariant : defaultFontVariant,\n },\n style,\n ]);\n }, [theme, extractedStyleProps, style, numeric, fontStyle, fontWeight]);\n\n return <Text {...rest} style={typographyStyle} />;\n };\n\n Component.displayName = `Typography.${key}`;\n\n return memo(Component);\n}\n","import { createPreset } from \"../../hocs\";\n\nexport const Typography = {\n Master: createPreset(\n (theme) => ({ fontWeight: theme.fontWeight.regular }),\n \"Master\",\n ),\n\n DisplayLarge: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.bold,\n fontSize: theme.fontSize.colossal,\n lineHeight: theme.lineHeight.colossal,\n }),\n \"DisplayLarge\",\n ),\n\n DisplayMedium: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.bold,\n fontSize: theme.fontSize.giant,\n lineHeight: theme.lineHeight.giant,\n }),\n \"DisplayMedium\",\n ),\n\n DisplaySmall: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.semiBold,\n fontSize: theme.fontSize.huge,\n lineHeight: theme.lineHeight.huge,\n }),\n \"DisplaySmall\",\n ),\n\n Title1: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.bold,\n fontSize: theme.fontSize.xxxl,\n lineHeight: theme.lineHeight.xxxl,\n }),\n \"Title1\",\n ),\n\n Title2: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.bold,\n fontSize: theme.fontSize.xxl,\n lineHeight: theme.lineHeight.xxl,\n }),\n \"Title2\",\n ),\n\n Title3: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.semiBold,\n fontSize: theme.fontSize.xl,\n lineHeight: theme.lineHeight.xl,\n }),\n \"Title3\",\n ),\n\n Title4: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.semiBold,\n fontSize: theme.fontSize.lg,\n lineHeight: theme.lineHeight.lg,\n }),\n \"Title4\",\n ),\n\n Title5: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.semiBold,\n fontSize: theme.fontSize.md,\n lineHeight: theme.lineHeight.md,\n }),\n \"Title5\",\n ),\n\n Title6: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.semiBold,\n fontSize: theme.fontSize.sm,\n lineHeight: theme.lineHeight.sm,\n }),\n \"Title6\",\n ),\n\n Subtitle1: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.medium,\n fontSize: theme.fontSize.md,\n lineHeight: theme.lineHeight.lg,\n }),\n \"Subtitle1\",\n ),\n\n Subtitle2: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.regular,\n fontSize: theme.fontSize.sm,\n lineHeight: theme.lineHeight.sm,\n }),\n \"Subtitle2\",\n ),\n\n BodyLarge: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.regular,\n fontSize: theme.fontSize.md,\n lineHeight: theme.lineHeight.lg,\n }),\n \"BodyLarge\",\n ),\n\n Body: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.regular,\n fontSize: theme.fontSize.sm,\n lineHeight: theme.lineHeight.sm,\n }),\n \"Body\",\n ),\n\n BodySmall: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.regular,\n fontSize: theme.fontSize.xsm,\n lineHeight: theme.lineHeight.xsm,\n }),\n \"BodySmall\",\n ),\n\n Caption: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.regular,\n fontSize: theme.fontSize.xs,\n lineHeight: theme.lineHeight.xs,\n }),\n \"Caption\",\n ),\n\n Label: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.medium,\n fontSize: theme.fontSize.xsm,\n lineHeight: theme.lineHeight.xsm,\n }),\n \"Label\",\n ),\n\n Overline: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.semiBold,\n fontSize: theme.fontSize.xs,\n lineHeight: theme.lineHeight.xs,\n textTransform: \"uppercase\",\n letterSpacing: 1,\n }),\n \"Overline\",\n ),\n\n Helper: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.regular,\n fontSize: theme.fontSize.xsm,\n lineHeight: theme.lineHeight.xsm,\n }),\n \"Helper\",\n ),\n\n Code: createPreset(\n (theme) => ({\n fontFamily: \"monospace\",\n fontSize: theme.fontSize.xsm,\n lineHeight: theme.lineHeight.xsm,\n }),\n \"Code\",\n ),\n\n Quote: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.regular,\n fontSize: theme.fontSize.md,\n lineHeight: theme.lineHeight.lg,\n fontStyle: \"italic\",\n }),\n \"Quote\",\n ),\n\n Eyebrow: createPreset(\n (theme) => ({\n fontWeight: theme.fontWeight.medium,\n fontSize: theme.fontSize.xs,\n lineHeight: theme.lineHeight.xs,\n textTransform: \"uppercase\",\n letterSpacing: 1,\n }),\n \"Eyebrow\",\n ),\n};\n\nexport type TypographyComponent = (typeof Typography)[keyof typeof Typography];\n","import { memo, PropsWithChildren, useMemo } from \"react\";\nimport { ActivityIndicator, StyleSheet } from \"react-native\";\n\nimport { AppTheme, useThemedStyles } from \"@impulse-ui-native/theme\";\n\nimport { ButtonProps, ButtonThemeProps } from \"../../types\";\nimport { Pressable } from \"./pressable\";\nimport { Typography } from \"./typography\";\n\nexport const Button = memo(function Button({\n size = \"medium\",\n variant = \"filled\",\n disabled,\n children,\n style,\n ...props\n}: PropsWithChildren<ButtonProps>) {\n const styles = useThemedStyles(themedStyles, { size, variant, disabled }, [\n size,\n variant,\n disabled,\n ]);\n\n const buttonStyles = useMemo(\n () => [styles.button, style],\n [styles.button, style],\n );\n\n const content = useMemo(() => {\n if (props.loading) {\n return <ActivityIndicator color={styles.text.color} />;\n }\n\n return typeof children === \"string\" ? (\n <Typography.Master style={styles.text}>{children}</Typography.Master>\n ) : (\n children\n );\n }, [children, props.loading, styles.text]);\n\n return (\n <Pressable style={buttonStyles} disabled={disabled} {...props}>\n {content}\n </Pressable>\n );\n});\n\nfunction themedStyles(theme: AppTheme, props: ButtonThemeProps) {\n const { size, variant, disabled } = props;\n\n const buttonTokens = theme.components.button;\n const sizeTokens = buttonTokens.sizes[size];\n const variantTokens = buttonTokens.variants[variant];\n\n return StyleSheet.create({\n button: {\n alignItems: \"center\",\n justifyContent: \"center\",\n\n height: sizeTokens.height,\n paddingVertical: sizeTokens.paddingVertical,\n paddingHorizontal: sizeTokens.paddingHorizontal,\n\n borderWidth: buttonTokens.borderWidth,\n borderRadius: buttonTokens.borderRadius,\n\n borderColor: disabled\n ? variantTokens.disabledBorderColor\n : variantTokens.borderColor,\n\n backgroundColor: disabled\n ? variantTokens.disabledBackgroundColor\n : variantTokens.backgroundColor,\n },\n\n text: {\n width: \"100%\",\n textAlign: \"center\",\n\n fontSize: sizeTokens.fontSize,\n\n color: disabled ? variantTokens.disabledColor : variantTokens.color,\n },\n });\n}\n","import { PropsWithChildren, useCallback } from \"react\";\nimport {\n PressableStateCallbackType,\n Pressable as RNPressable,\n StyleProp,\n StyleSheet,\n ViewStyle,\n} from \"react-native\";\n\nimport {\n getShadowStyle,\n useColors,\n useStyleProps,\n} from \"@impulse-ui-native/theme\";\n\nimport { PressableCoreProps } from \"../../types\";\n\nexport const Pressable = function PressableCore({\n children,\n disabled,\n pressedStyle,\n style,\n ...props\n}: PropsWithChildren<PressableCoreProps>) {\n const colors = useColors();\n const extractedStyleProps = useStyleProps(props);\n\n const pressableStyles = useCallback(\n (state: PressableStateCallbackType): StyleProp<ViewStyle> => {\n let overrideStyle: StyleProp<ViewStyle>;\n\n if (typeof style === \"function\") {\n overrideStyle = style(state);\n } else {\n overrideStyle = style;\n }\n\n return StyleSheet.flatten([\n { opacity: disabled || state.pressed ? 0.6 : 1 },\n getShadowStyle(props.shadow, props.shadowPosition, colors),\n extractedStyleProps,\n overrideStyle,\n state.pressed ? pressedStyle : undefined,\n ]);\n },\n [\n style,\n pressedStyle,\n disabled,\n extractedStyleProps,\n props.shadow,\n props.shadowPosition,\n colors,\n ],\n );\n\n return (\n <RNPressable {...props} style={pressableStyles} disabled={disabled}>\n {children}\n </RNPressable>\n );\n};\n","import { memo, PropsWithChildren, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport { Icon } from \"@impulse-ui-native/icon/components/icon\";\nimport { AppTheme, useThemedStyles } from \"@impulse-ui-native/theme\";\n\nimport { IconButtonProps, IconButtonThemeProps } from \"../../types\";\nimport { Pressable } from \"./pressable\";\n\nexport const IconButton = memo(function IconButton({\n size = \"medium\",\n variant = \"filled\",\n disabled,\n style,\n icon,\n ...props\n}: PropsWithChildren<IconButtonProps>) {\n const styles = useThemedStyles(themedStyles, { size, variant, disabled }, [\n size,\n variant,\n disabled,\n ]);\n\n const iconButtonStyles = useMemo(\n () => [styles.button, style],\n [styles.button, style],\n );\n\n return (\n <Pressable style={iconButtonStyles} disabled={disabled} {...props}>\n <Icon size={size} icon={icon} color={styles.icon.color} />\n </Pressable>\n );\n});\n\nfunction themedStyles(theme: AppTheme, props: IconButtonThemeProps) {\n const { size, variant, disabled } = props;\n\n const iconButtonTokens = theme.components.iconButton;\n const sizeTokens = iconButtonTokens.sizes[size];\n const variantTokens = iconButtonTokens.variants[variant];\n\n return StyleSheet.create({\n button: {\n alignItems: \"center\",\n justifyContent: \"center\",\n\n height: sizeTokens.size,\n width: sizeTokens.size,\n padding: sizeTokens.padding,\n\n borderWidth: iconButtonTokens.borderWidth,\n borderRadius: iconButtonTokens.borderRadius,\n\n borderColor: disabled\n ? variantTokens.disabledBorderColor\n : variantTokens.borderColor,\n\n backgroundColor: disabled\n ? variantTokens.disabledBackgroundColor\n : variantTokens.backgroundColor,\n },\n\n icon: {\n color: disabled ? variantTokens.disabledColor : variantTokens.color,\n },\n });\n}\n","import { memo, useMemo } from \"react\";\nimport { StyleSheet, View } from \"react-native\";\n\nimport { Icon } from \"@impulse-ui-native/icon/components/icon\";\nimport { XCircleIcon } from \"@impulse-ui-native/icon/icons/x-circle\";\nimport { AppTheme, useThemedStyles } from \"@impulse-ui-native/theme\";\n\nimport { TagProps, TagThemeProps } from \"../../types\";\nimport { Pressable } from \"./pressable\";\nimport { Typography } from \"./typography\";\n\nexport const Tag = memo(function Tag({\n label,\n size = \"medium\",\n variant = \"filled\",\n color = \"primary\",\n closable,\n disabled,\n onClose,\n onPress,\n}: TagProps) {\n const styles = useThemedStyles(\n themedStyles,\n {\n size,\n variant,\n disabled,\n color,\n },\n [size, variant, disabled, color],\n );\n\n const Container = useMemo(() => {\n if (onPress) {\n return Pressable;\n }\n\n return View;\n }, [onPress]);\n\n const showClose =\n (closable || size === \"medium\" || size === \"large\") && !disabled && onClose;\n\n return (\n <Container onPress={onPress} disabled={disabled} style={styles.container}>\n <Typography.Caption style={styles.label}>{label}</Typography.Caption>\n\n {showClose ? (\n <Pressable onPress={onClose} hitSlop={10}>\n <Icon\n icon={XCircleIcon}\n size=\"small\"\n color={styles.icon.color}\n style={styles.icon}\n />\n </Pressable>\n ) : null}\n </Container>\n );\n});\n\nfunction themedStyles(theme: AppTheme, props: TagThemeProps) {\n const { size, variant, color, disabled } = props;\n\n const tagTokens = theme.components.tag;\n const sizeTokens = tagTokens.sizes[size];\n const variantTokens = tagTokens.colors[color][variant];\n\n return StyleSheet.create({\n container: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n alignSelf: \"flex-start\",\n\n height: sizeTokens.height,\n paddingHorizontal: sizeTokens.paddingHorizontal,\n minWidth: sizeTokens.minWidth,\n\n borderRadius: tagTokens.borderRadius,\n gap: tagTokens.gap,\n borderWidth: tagTokens.borderWidth,\n\n borderColor: disabled\n ? variantTokens.disabledBorderColor\n : variantTokens.borderColor,\n\n backgroundColor: disabled\n ? variantTokens.disabledBackgroundColor\n : variantTokens.backgroundColor,\n },\n\n label: {\n fontSize: sizeTokens.fontSize,\n color: disabled ? variantTokens.disabledColor : variantTokens.color,\n },\n\n icon: {\n marginLeft: tagTokens.iconMarginLeft,\n color: disabled ? variantTokens.disabledColor : variantTokens.color,\n },\n });\n}\n","import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport { Icon } from \"@impulse-ui-native/icon/components/icon\";\nimport {\n AppTheme,\n useComponentsTokens,\n useThemedStyles,\n} from \"@impulse-ui-native/theme\";\n\nimport { ControlAddonProps } from \"../../types\";\nimport { Pressable, View } from \"../atoms\";\nimport { useControlContext } from \"./provider\";\n\nexport const ControlAddon = memo(function ControlAddon(\n props: ControlAddonProps,\n) {\n const { icon: AddonIcon, onPress, Content, style, ...rest } = props;\n\n const { disabled, error } = useControlContext();\n\n const tokens = useComponentsTokens();\n\n const styles = useThemedStyles(\n themedStyles,\n {\n disabled,\n error,\n },\n [disabled, error],\n );\n\n const Container = useMemo(() => {\n if (onPress) {\n return Pressable;\n }\n\n return View;\n }, [onPress]);\n\n const children = useMemo(() => {\n if (Content) {\n return <Content />;\n }\n\n if (AddonIcon) {\n return <Icon color={styles.icon.color} icon={AddonIcon} />;\n }\n\n return null;\n }, [AddonIcon, Content, styles.icon.color]);\n\n const containerStyle = useMemo(\n () => [styles.container, style],\n [styles.container, style],\n );\n\n if (!children) {\n return null;\n }\n\n return (\n <Container\n {...rest}\n style={containerStyle}\n hitSlop={tokens.controlAddon.hitSlop}\n onPress={onPress}\n disabled={disabled}\n >\n {children}\n </Container>\n );\n});\n\nfunction themedStyles(\n theme: AppTheme,\n props: {\n disabled?: boolean;\n error?: string;\n },\n) {\n const { disabled, error } = props;\n\n const controlAddonTokens = theme.components.controlAddon;\n\n return StyleSheet.create({\n container: {\n marginHorizontal: controlAddonTokens.marginHorizontal,\n },\n\n icon: {\n color: disabled\n ? controlAddonTokens.disabledIconColor\n : error\n ? controlAddonTokens.errorIconColor\n : controlAddonTokens.iconColor,\n },\n });\n}\n","import { createContext, memo, PropsWithChildren, useContext } from \"react\";\n\nimport { ControlContextData } from \"../../types\";\n\nconst ControlContext = createContext<ControlContextData | undefined>(undefined);\n\nexport const ControlProvider = memo(function ControlProvider(\n props: PropsWithChildren<ControlContextData>,\n) {\n const { children, ...context } = props;\n\n return (\n <ControlContext.Provider value={context}>\n {children}\n </ControlContext.Provider>\n );\n});\n\nexport function useControlContext() {\n const context = useContext(ControlContext);\n\n if (!context) {\n throw new Error(\"useControlContext must be used within ControlProvider\");\n }\n\n return context;\n}\n","import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport {\n AppTheme,\n ComponentSize,\n ComponentVariant,\n useThemedStyles,\n} from \"@impulse-ui-native/theme\";\n\nimport { ControlContainerProps } from \"../../types\";\nimport { View } from \"../atoms/view\";\nimport { useControlContext } from \"./provider\";\n\nexport const ControlContainer = memo(function ControlContainer(\n props: ControlContainerProps,\n) {\n const { style, ...rest } = props;\n\n const { size, variant, disabled, error } = useControlContext();\n\n const styles = useThemedStyles(\n themedStyles,\n {\n size,\n variant,\n disabled,\n error,\n },\n [size, variant, disabled, error],\n );\n\n const containerStyle = useMemo(\n () => [styles.inputContainer, style],\n [styles.inputContainer, style],\n );\n\n return <View style={containerStyle} {...rest} />;\n});\n\nfunction themedStyles(\n theme: AppTheme,\n {\n size,\n variant,\n disabled,\n error,\n }: {\n size: ComponentSize;\n variant: ComponentVariant;\n disabled?: boolean;\n error?: string;\n },\n) {\n const controlContainerTokens = theme.components.controlContainer;\n const sizeTokens = controlContainerTokens.sizes[size];\n const variantTokens = controlContainerTokens.variants[variant];\n\n return StyleSheet.create({\n inputContainer: {\n flexDirection: \"row\",\n alignItems: \"center\",\n\n height: sizeTokens.height,\n paddingHorizontal: sizeTokens.paddingHorizontal,\n\n borderRadius: controlContainerTokens.borderRadius,\n borderWidth: controlContainerTokens.borderWidth,\n\n opacity: disabled ? controlContainerTokens.disabledOpacity : 1,\n\n backgroundColor: disabled\n ? variantTokens.disabledBackgroundColor\n : variantTokens.backgroundColor,\n\n borderColor: error\n ? variantTokens.errorBorderColor\n : disabled\n ? variantTokens.disabledBorderColor\n : variantTokens.borderColor,\n\n borderBottomColor: error\n ? variantTokens.errorBorderBottomColor\n : disabled\n ? variantTokens.disabledBorderBottomColor\n : variantTokens.borderBottomColor,\n },\n });\n}\n","import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport { AppTheme, useThemedStyles } from \"@impulse-ui-native/theme\";\n\nimport { ControlErrorLabelProps } from \"../../types\";\nimport { Typography } from \"../atoms\";\nimport { useControlContext } from \"./provider\";\n\nexport const ControlError = memo(function ControlError(\n props: ControlErrorLabelProps,\n) {\n const { style, ...rest } = props;\n\n const { error } = useControlContext();\n\n const styles = useThemedStyles(themedStyles);\n\n const errorStyle = useMemo(\n () => [styles.error, style],\n [styles.error, style],\n );\n\n if (!Boolean(error)) {\n return null;\n }\n\n return (\n <Typography.Caption {...rest} style={errorStyle}>\n {error}\n </Typography.Caption>\n );\n});\n\nfunction themedStyles(theme: AppTheme) {\n const controlErrorTokens = theme.components.controlError;\n\n return StyleSheet.create({\n error: {\n marginTop: controlErrorTokens.marginTop,\n color: controlErrorTokens.color,\n fontSize: controlErrorTokens.fontSize,\n },\n });\n}\n","import { memo, useMemo } from \"react\";\nimport { StyleSheet, TextInput } from \"react-native\";\n\nimport {\n AppTheme,\n ComponentSize,\n ComponentVariant,\n useThemedStyles,\n} from \"@impulse-ui-native/theme\";\n\nimport { ControlInputProps } from \"../../types\";\nimport { useControlContext } from \"./provider\";\n\nexport const ControlInput = memo(function ControlInput(\n props: ControlInputProps,\n) {\n const { onPress, style, ...rest } = props;\n\n const { size, variant, disabled, error } = useControlContext();\n\n const styles = useThemedStyles(\n themedStyles,\n {\n size,\n variant,\n disabled,\n error,\n },\n [size, variant, disabled, error],\n );\n\n const inputStyles = useMemo(\n () => [styles.input, style],\n [styles.input, style],\n );\n\n return (\n <TextInput\n {...rest}\n style={inputStyles}\n placeholderTextColor={styles.placeholder.color}\n editable={!disabled}\n />\n );\n});\n\nfunction themedStyles(\n theme: AppTheme,\n {\n size,\n variant,\n disabled,\n error,\n }: {\n size: ComponentSize;\n variant: ComponentVariant;\n disabled?: boolean;\n error?: string;\n },\n) {\n const controlInputTokens = theme.components.controlInput;\n const sizeTokens = controlInputTokens.sizes[size];\n const variantTokens = controlInputTokens.variants[variant];\n\n const color = disabled\n ? variantTokens.disabledColor\n : error\n ? variantTokens.errorColor\n : variantTokens.color;\n\n const placeholderColor = disabled\n ? variantTokens.disabledPlaceholderColor\n : error\n ? variantTokens.errorPlaceholderColor\n : variantTokens.placeholderColor;\n\n return StyleSheet.create({\n input: {\n flex: controlInputTokens.flex,\n color,\n fontSize: sizeTokens.fontSize,\n fontFamily: controlInputTokens.fontFamily,\n paddingHorizontal: controlInputTokens.paddingHorizontal,\n height: \"100%\",\n },\n\n placeholder: {\n color: placeholderColor,\n },\n });\n}\n","import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport { AppTheme, useThemedStyles } from \"@impulse-ui-native/theme\";\n\nimport { ControlLabelProps } from \"../../types\";\nimport { Typography } from \"../atoms\";\nimport { useControlContext } from \"./provider\";\n\nexport const ControlLabel = memo(function ControlLabel(\n props: ControlLabelProps,\n) {\n const { children, disabled, style, ...rest } = props;\n\n const { error } = useControlContext();\n\n const styles = useThemedStyles(\n themedStyles,\n {\n disabled,\n error,\n },\n [disabled, error],\n );\n\n const labelStyle = useMemo(\n () => [styles.label, style],\n [styles.label, style],\n );\n\n if (!children) {\n return null;\n }\n\n return (\n <Typography.Label {...rest} style={labelStyle}>\n {children}\n </Typography.Label>\n );\n});\n\nfunction themedStyles(\n theme: AppTheme,\n props: {\n disabled?: boolean;\n error?: string;\n },\n) {\n const { disabled, error } = props;\n\n const controlLabelTokens = theme.components.controlLabel;\n\n const color = disabled\n ? controlLabelTokens.disabledColor\n : error\n ? controlLabelTokens.errorColor\n : controlLabelTokens.color;\n\n return StyleSheet.create({\n label: {\n marginBottom: controlLabelTokens.marginBottom,\n fontSize: controlLabelTokens.fontSize,\n color,\n },\n });\n}\n","import { memo } from \"react\";\nimport { ActivityIndicator } from \"react-native\";\n\nexport const ControlLoader = memo(function ControlLoader() {\n return <ActivityIndicator />;\n});\n","import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport {\n AppTheme,\n ComponentSize,\n ComponentVariant,\n useThemedStyles,\n} from \"@impulse-ui-native/theme\";\n\nimport { ControlPlaceholderProps } from \"../../types\";\nimport { Typography } from \"../atoms\";\nimport { useControlContext } from \"./provider\";\n\nexport const ControlPlaceholder = memo(function ControlPlaceholder(\n props: ControlPlaceholderProps,\n) {\n const { style, ...rest } = props;\n\n const { size, variant, disabled, error } = useControlContext();\n\n const styles = useThemedStyles(\n themedStyles,\n {\n size,\n variant,\n disabled,\n error,\n },\n [size, variant, disabled, error],\n );\n\n const placeholderStyle = useMemo(\n () => [styles.placeholder, style],\n [styles.placeholder, style],\n );\n\n return (\n <Typography.Master numberOfLines={1} {...rest} style={placeholderStyle} />\n );\n});\n\nfunction themedStyles(\n theme: AppTheme,\n {\n size,\n variant,\n disabled,\n error,\n }: {\n size: ComponentSize;\n variant: ComponentVariant;\n disabled?: boolean;\n error?: string;\n },\n) {\n const controlInputTokens = theme.components.controlInput;\n const sizeTokens = controlInputTokens.sizes[size];\n const variantTokens = controlInputTokens.variants[variant];\n\n const color = disabled\n ? variantTokens.disabledPlaceholderColor\n : error\n ? variantTokens.errorPlaceholderColor\n : variantTokens.placeholderColor;\n\n return StyleSheet.create({\n placeholder: {\n flex: controlInputTokens.flex,\n color,\n fontFamily: controlInputTokens.fontFamily,\n fontSize: sizeTokens.fontSize,\n paddingHorizontal: controlInputTokens.paddingHorizontal,\n },\n });\n}\n","import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport { ViewProps } from \"../../types\";\nimport { View } from \"../atoms\";\n\nexport const ControlRoot = memo(function ControlRoot(props: ViewProps) {\n const { style, ...rest } = props;\n\n const containerStyle = useMemo(() => [styles.container, style], [style]);\n\n return <View {...rest} style={containerStyle} />;\n});\n\nconst styles = StyleSheet.create({\n container: {\n width: \"100%\",\n },\n});\n","import { memo, useMemo } from \"react\";\nimport { StyleSheet } from \"react-native\";\n\nimport {\n AppTheme,\n ComponentSize,\n useThemedStyles,\n} from \"@impulse-ui-native/theme\";\n\nimport { ControlValueProps } from \"../../types\";\nimport { Typography } from \"../atoms\";\nimport { useControlContext } from \"./provider\";\n\nexport const ControlValue = memo(function ControlValue(\n props: ControlValueProps,\n) {\n const { style, ...rest } = props;\n\n const { size } = useControlContext();\n\n const styles = useThemedStyles(themedStyles, { size }, [size]);\n\n const valueStyle = useMemo(\n () => [styles.value, style],\n [styles.value, style],\n );\n\n return <Typography.Master numberOfLines={1} {...rest} style={valueStyle} />;\n});\n\nfunction themedStyles(\n theme: AppTheme,\n {\n size,\n }: {\n size: ComponentSize;\n },\n) {\n const controlInputTokens = theme.components.controlInput;\n const sizeTokens = controlInputTokens.sizes[size];\n\n return StyleSheet.create({\n value: {\n flex: controlInputTokens.flex,\n fontFamily: controlInputTokens.fontFamily,\n fontSize: sizeTokens.fontSize,\n paddingHorizontal: controlInputTokens.paddingHorizontal,\n },\n });\n}\n","import { ControlAddon } from \"./addon\";\nimport { ControlContainer } from \"./container\";\nimport { ControlError } from \"./error\";\nimport { ControlInput } from \"./input\";\nimport { ControlLabel } from \"./label\";\nimport { ControlLoader } from \"./loader\";\nimport { ControlPlaceholder } from \"./placeholder\";\nimport { ControlProvider } from \"./provider\";\nimport { ControlRoot } from \"./root\";\nimport { ControlValue } from \"./value\";\n\nexport const Control = {\n Container: ControlContainer,\n Provider: ControlProvider,\n Root: ControlRoot,\n Label: ControlLabel,\n Error: ControlError,\n Addon: ControlAddon,\n Input: ControlInput,\n Placeholder: ControlPlaceholder,\n Value: ControlValue,\n Loader: ControlLoader,\n};\n"],"mappings":"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","names":["View","memo","useMemo","StyleSheet","jsx","memo","SafeAreaView","useMemo","StyleSheet","memo","useMemo","StyleSheet","useStyleProps","jsx","memo","useMemo","StyleSheet","useCallback","StyleSheet","getShadowStyle","useColors","useStyleProps","jsx","jsx","memo","Button","styles","useMemo","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","IconButton","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","useMemo","StyleSheet","View","Icon","useThemedStyles","jsx","memo","Tag","styles","useThemedStyles","themedStyles","useMemo","View","Icon","StyleSheet","memo","useMemo","StyleSheet","Icon","useThemedStyles","memo","jsx","ControlProvider","jsx","memo","ControlAddon","styles","useThemedStyles","themedStyles","useMemo","Icon","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlContainer","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlError","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlInput","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlLabel","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","ActivityIndicator","jsx","ControlLoader","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlPlaceholder","styles","useThemedStyles","themedStyles","useMemo","StyleSheet","memo","useMemo","StyleSheet","jsx","memo","ControlRoot","useMemo","StyleSheet","memo","useMemo","StyleSheet","useThemedStyles","jsx","memo","ControlValue","styles","useThemedStyles","themedStyles","useMemo","StyleSheet"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@impulse-ui-native/primitives",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "source": "src/index.ts",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.mts",
@@ -18,21 +18,21 @@
18
18
  "LICENSE"
19
19
  ],
20
20
  "dependencies": {
21
- "@impulse-ui-native/theme": "2.0.0",
22
- "@impulse-ui-native/core": "2.0.0",
23
- "@impulse-ui-native/icon": "2.0.0"
21
+ "@impulse-ui-native/theme": "2.1.0",
22
+ "@impulse-ui-native/core": "2.1.0",
23
+ "@impulse-ui-native/icon": "2.1.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/react": "~19.2.14",
27
27
  "eslint": "^9.38.0",
28
28
  "prettier": "^3.6.2",
29
- "react": "19.2.0",
30
- "react-native": "0.83.6",
31
- "react-native-safe-area-context": "~5.6.0",
32
- "typescript": "~5.9.2",
33
- "@impulse-ui-native/prettier-config": "1.0.0",
29
+ "react": "19.2.3",
30
+ "react-native": "0.86.2",
31
+ "react-native-safe-area-context": "~5.7.0",
32
+ "typescript": "~6.0.3",
33
+ "@impulse-ui-native/tsconfig": "1.0.0",
34
34
  "@impulse-ui-native/eslint-config": "1.0.0",
35
- "@impulse-ui-native/tsconfig": "1.0.0"
35
+ "@impulse-ui-native/prettier-config": "1.0.0"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "react": ">=18",