@newtonedev/components 0.1.2 → 0.1.4

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.
Files changed (113) hide show
  1. package/dist/Popover/Popover.d.ts.map +1 -1
  2. package/dist/Popover/Popover.styles.d.ts +64 -1
  3. package/dist/Popover/Popover.styles.d.ts.map +1 -1
  4. package/dist/Select/Select.d.ts.map +1 -1
  5. package/dist/_COMPONENT_TEMPLATE/ComponentName.d.ts +70 -0
  6. package/dist/_COMPONENT_TEMPLATE/ComponentName.d.ts.map +1 -0
  7. package/dist/_COMPONENT_TEMPLATE/ComponentName.styles.d.ts +22 -0
  8. package/dist/_COMPONENT_TEMPLATE/ComponentName.styles.d.ts.map +1 -0
  9. package/dist/_COMPONENT_TEMPLATE/ComponentName.types.d.ts +45 -0
  10. package/dist/_COMPONENT_TEMPLATE/ComponentName.types.d.ts.map +1 -0
  11. package/dist/_COMPONENT_TEMPLATE/index.d.ts +3 -0
  12. package/dist/_COMPONENT_TEMPLATE/index.d.ts.map +1 -0
  13. package/dist/fonts/GoogleFontLoader.d.ts.map +1 -1
  14. package/dist/fonts/IconFontLoader.d.ts.map +1 -1
  15. package/dist/index.cjs +371 -74
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.ts +11 -5
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +370 -76
  20. package/dist/index.js.map +1 -1
  21. package/dist/{Frame → primitives/Frame}/Frame.d.ts +1 -1
  22. package/dist/primitives/Frame/Frame.d.ts.map +1 -0
  23. package/dist/{Frame → primitives/Frame}/Frame.styles.d.ts +11 -2
  24. package/dist/primitives/Frame/Frame.styles.d.ts.map +1 -0
  25. package/dist/primitives/Frame/Frame.types.d.ts +240 -0
  26. package/dist/primitives/Frame/Frame.types.d.ts.map +1 -0
  27. package/dist/{Frame → primitives/Frame}/Frame.utils.d.ts +12 -12
  28. package/dist/primitives/Frame/Frame.utils.d.ts.map +1 -0
  29. package/dist/primitives/Frame/index.d.ts.map +1 -0
  30. package/dist/primitives/Icon/Icon.d.ts +17 -0
  31. package/dist/primitives/Icon/Icon.d.ts.map +1 -0
  32. package/dist/primitives/Icon/Icon.types.d.ts +55 -0
  33. package/dist/primitives/Icon/Icon.types.d.ts.map +1 -0
  34. package/dist/primitives/Icon/index.d.ts +3 -0
  35. package/dist/primitives/Icon/index.d.ts.map +1 -0
  36. package/dist/primitives/Text/Text.d.ts +17 -0
  37. package/dist/primitives/Text/Text.d.ts.map +1 -0
  38. package/dist/primitives/Text/Text.types.d.ts +85 -0
  39. package/dist/primitives/Text/Text.types.d.ts.map +1 -0
  40. package/dist/primitives/Text/index.d.ts +3 -0
  41. package/dist/primitives/Text/index.d.ts.map +1 -0
  42. package/dist/primitives/Wrapper/Wrapper.d.ts +29 -0
  43. package/dist/primitives/Wrapper/Wrapper.d.ts.map +1 -0
  44. package/dist/primitives/Wrapper/Wrapper.styles.d.ts +28 -0
  45. package/dist/primitives/Wrapper/Wrapper.styles.d.ts.map +1 -0
  46. package/dist/primitives/Wrapper/Wrapper.types.d.ts +113 -0
  47. package/dist/primitives/Wrapper/Wrapper.types.d.ts.map +1 -0
  48. package/dist/primitives/Wrapper/index.d.ts +3 -0
  49. package/dist/primitives/Wrapper/index.d.ts.map +1 -0
  50. package/dist/primitives/index.d.ts +12 -0
  51. package/dist/primitives/index.d.ts.map +1 -0
  52. package/dist/primitives/useFocusVisible.d.ts +29 -0
  53. package/dist/primitives/useFocusVisible.d.ts.map +1 -0
  54. package/dist/theme/defaults.d.ts.map +1 -1
  55. package/dist/theme/types.d.ts +13 -6
  56. package/dist/theme/types.d.ts.map +1 -1
  57. package/dist/tokens/computeTokens.d.ts +13 -6
  58. package/dist/tokens/computeTokens.d.ts.map +1 -1
  59. package/dist/tokens/types.d.ts +16 -7
  60. package/dist/tokens/types.d.ts.map +1 -1
  61. package/package.json +1 -1
  62. package/src/Button/Button.styles.ts +9 -9
  63. package/src/Button/Button.tsx +1 -1
  64. package/src/Card/Card.styles.ts +1 -1
  65. package/src/ColorScaleSlider/ColorScaleSlider.styles.ts +1 -1
  66. package/src/HueSlider/HueSlider.styles.ts +1 -1
  67. package/src/Popover/Popover.styles.ts +5 -1
  68. package/src/Popover/Popover.tsx +3 -1
  69. package/src/Select/Select.styles.ts +9 -9
  70. package/src/Select/Select.tsx +2 -3
  71. package/src/Select/SelectOption.tsx +6 -6
  72. package/src/Slider/Slider.styles.ts +1 -1
  73. package/src/TextInput/TextInput.styles.ts +3 -3
  74. package/src/Toggle/Toggle.styles.ts +1 -1
  75. package/src/_COMPONENT_TEMPLATE/ComponentName.styles.ts +29 -0
  76. package/src/_COMPONENT_TEMPLATE/ComponentName.tsx +106 -0
  77. package/src/_COMPONENT_TEMPLATE/ComponentName.types.ts +86 -0
  78. package/src/_COMPONENT_TEMPLATE/index.ts +2 -0
  79. package/src/fonts/GoogleFontLoader.tsx +2 -0
  80. package/src/fonts/IconFontLoader.tsx +2 -0
  81. package/src/index.ts +22 -5
  82. package/src/{Frame → primitives/Frame}/Frame.styles.ts +46 -9
  83. package/src/{Frame → primitives/Frame}/Frame.tsx +90 -16
  84. package/src/primitives/Frame/Frame.types.ts +315 -0
  85. package/src/{Frame → primitives/Frame}/Frame.utils.ts +56 -20
  86. package/src/primitives/Icon/Icon.tsx +89 -0
  87. package/src/primitives/Icon/Icon.types.ts +70 -0
  88. package/src/primitives/Icon/index.ts +2 -0
  89. package/src/primitives/Text/Text.tsx +90 -0
  90. package/src/primitives/Text/Text.types.ts +108 -0
  91. package/src/primitives/Text/index.ts +10 -0
  92. package/src/primitives/Wrapper/Wrapper.styles.ts +113 -0
  93. package/src/primitives/Wrapper/Wrapper.tsx +104 -0
  94. package/src/primitives/Wrapper/Wrapper.types.ts +149 -0
  95. package/src/primitives/Wrapper/index.ts +2 -0
  96. package/src/primitives/index.ts +46 -0
  97. package/src/primitives/useFocusVisible.ts +102 -0
  98. package/src/theme/defaults.ts +13 -6
  99. package/src/theme/types.ts +13 -6
  100. package/src/tokens/computeTokens.ts +1 -1
  101. package/src/tokens/types.ts +16 -7
  102. package/dist/Frame/Frame.d.ts.map +0 -1
  103. package/dist/Frame/Frame.styles.d.ts.map +0 -1
  104. package/dist/Frame/Frame.types.d.ts +0 -115
  105. package/dist/Frame/Frame.types.d.ts.map +0 -1
  106. package/dist/Frame/Frame.utils.d.ts.map +0 -1
  107. package/dist/Frame/index.d.ts.map +0 -1
  108. package/dist/Icon/Icon.d.ts +0 -36
  109. package/dist/Icon/Icon.d.ts.map +0 -1
  110. package/src/Frame/Frame.types.ts +0 -181
  111. package/src/Icon/Icon.tsx +0 -76
  112. /package/dist/{Frame → primitives/Frame}/index.d.ts +0 -0
  113. /package/src/{Frame → primitives/Frame}/index.ts +0 -0
@@ -44,5 +44,5 @@ import type { FrameProps } from './Frame.types';
44
44
  * </Frame>
45
45
  * ```
46
46
  */
47
- export declare function Frame({ children, theme, elevation, layout, direction, wrap, reverse, columns, rows, align, justify, padding, gap, width, height, minWidth, maxWidth, minHeight, maxHeight, radius, bordered, onPress, href, disabled, style, }: FrameProps): React.JSX.Element;
47
+ export declare function Frame({ children, theme, elevation, layout, direction, wrap, reverse, columns, rows, align, justify, padding, gap, width, height, minWidth, maxWidth, minHeight, maxHeight, radius, bordered, onPress, href, disabled, accessibilityLabel, accessibilityHint, testID, nativeID, ref, style, }: FrameProps): React.JSX.Element;
48
48
  //# sourceMappingURL=Frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.d.ts","sourceRoot":"","sources":["../../../src/primitives/Frame/Frame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA6ChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EAER,KAAK,EACL,SAAS,EAET,MAAM,EACN,SAAS,EACT,IAAI,EACJ,OAAO,EACP,OAAO,EACP,IAAI,EAEJ,KAAK,EACL,OAAO,EAEP,OAAO,EACP,GAAG,EAEH,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EAET,MAAM,EACN,QAAQ,EAER,OAAO,EACP,IAAI,EACJ,QAAgB,EAEhB,kBAAkB,EAClB,iBAAiB,EAEjB,MAAM,EACN,QAAQ,EACR,GAAG,EAEH,KAAK,GACN,EAAE,UAAU,qBAsLZ"}
@@ -1,6 +1,6 @@
1
1
  import type { ViewStyle } from 'react-native';
2
- import type { ResolvedTokens } from '../tokens/types';
3
- import type { FrameElevation } from '../theme/types';
2
+ import type { ResolvedTokens } from '../../tokens/types';
3
+ import type { FrameElevation } from '../../theme/types';
4
4
  import type { PaddingProp, GapProp, SizingMode, Direction, Alignment, Justification, RadiusProp, LayoutMode } from './Frame.types';
5
5
  export interface FrameStyleInput {
6
6
  readonly tokens: ResolvedTokens;
@@ -35,5 +35,14 @@ export interface FrameStyles {
35
35
  /** Web-only inset box-shadow string for elevation -2 */
36
36
  readonly insetBoxShadow: string | null;
37
37
  }
38
+ /**
39
+ * Build all visual styles for a Frame.
40
+ *
41
+ * Takes the Frame's props + design tokens and produces:
42
+ * - container: the main style (background, layout, spacing, border, shadow, etc.)
43
+ * - pressed: style override applied when the user is pressing/clicking
44
+ * - gridWebStyle: CSS Grid properties (only works on web, null otherwise)
45
+ * - insetBoxShadow: inner shadow CSS string for sunken frames (web-only)
46
+ */
38
47
  export declare function getFrameStyles(input: FrameStyleInput): FrameStyles;
39
48
  //# sourceMappingURL=Frame.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.styles.d.ts","sourceRoot":"","sources":["../../../src/primitives/Frame/Frame.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACX,MAAM,eAAe,CAAC;AAcvB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGxC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAGvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IAGjC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAGvB,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAG5B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAID,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;IAClD,wDAAwD;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAID;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,CAmKlE"}
@@ -0,0 +1,240 @@
1
+ import type { View, ViewStyle, GestureResponderEvent } from 'react-native';
2
+ import type { ThemeName, FrameElevation } from '../../theme/types';
3
+ /** Design system spacing tokens (represent px values at Medium preset) */
4
+ export type SpacingToken = '00' | '02' | '04' | '06' | '08' | '10' | '12' | '16' | '20' | '24' | '32' | '40' | '48';
5
+ /** A spacing value: either a design token name or a pixel number */
6
+ export type SpacingValue = SpacingToken | number;
7
+ /** Per-side spacing */
8
+ export interface SpacingSides {
9
+ readonly top?: SpacingValue;
10
+ readonly right?: SpacingValue;
11
+ readonly bottom?: SpacingValue;
12
+ readonly left?: SpacingValue;
13
+ }
14
+ /** Axis-based spacing shorthand */
15
+ export interface SpacingAxes {
16
+ readonly x?: SpacingValue;
17
+ readonly y?: SpacingValue;
18
+ }
19
+ /**
20
+ * Padding value — supports three forms:
21
+ *
22
+ * - **Uniform**: `'12'` or `16` — same padding on all sides
23
+ * - **Axis shorthand**: `{ x: '16', y: '08' }` — horizontal/vertical
24
+ * - **Per-side**: `{ top: 8, bottom: 16, left: '12', right: '12' }` — individual sides
25
+ *
26
+ * Token names (`'00'` through `'48'`) resolve to pixel values from the theme.
27
+ */
28
+ export type PaddingProp = SpacingValue | SpacingAxes | SpacingSides;
29
+ /** Gap axis shorthand */
30
+ export interface GapAxes {
31
+ readonly row?: SpacingValue;
32
+ readonly column?: SpacingValue;
33
+ }
34
+ /**
35
+ * Gap value — supports two forms:
36
+ *
37
+ * - **Uniform**: `'12'` or `12` — same gap between all children
38
+ * - **Row/column**: `{ row: '08', column: '16' }` — different gaps per axis
39
+ *
40
+ * Token names (`'00'` through `'48'`) resolve to pixel values from the theme.
41
+ */
42
+ export type GapProp = SpacingValue | GapAxes;
43
+ /** Design system radius tokens */
44
+ export type RadiusToken = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'pill';
45
+ /** A radius value: either a design token name or a pixel number */
46
+ export type RadiusValue = RadiusToken | number;
47
+ /** Per-corner radius */
48
+ export interface RadiusCorners {
49
+ readonly topLeft?: RadiusValue;
50
+ readonly topRight?: RadiusValue;
51
+ readonly bottomLeft?: RadiusValue;
52
+ readonly bottomRight?: RadiusValue;
53
+ }
54
+ /**
55
+ * Border radius — supports two forms:
56
+ *
57
+ * - **Uniform**: `'md'` or `8` — same radius on all corners
58
+ * - **Per-corner**: `{ topLeft: 'lg', topRight: 'lg', bottomLeft: 0, bottomRight: 0 }`
59
+ *
60
+ * Token names (`'none'` through `'pill'`) resolve to pixel values from the theme.
61
+ */
62
+ export type RadiusProp = RadiusValue | RadiusCorners;
63
+ /**
64
+ * Figma-like sizing mode:
65
+ *
66
+ * - `'hug'` — shrink to fit content (default, no explicit dimension set)
67
+ * - `'fill'` — expand to fill available space (`flexGrow: 1` + `width/height: '100%'`)
68
+ * - `number` — fixed pixel dimension (e.g., `200`)
69
+ */
70
+ export type SizingMode = 'hug' | 'fill' | number;
71
+ /** Layout mode */
72
+ export type LayoutMode = 'flex' | 'grid';
73
+ /** Flex direction (Figma-like naming) */
74
+ export type Direction = 'horizontal' | 'vertical';
75
+ /** Cross-axis alignment */
76
+ export type Alignment = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
77
+ /** Main-axis justification */
78
+ export type Justification = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
79
+ /**
80
+ * Props for Frame — the foundational layout building block.
81
+ *
82
+ * Frame provides theme/elevation context, layout (flex/grid), spacing,
83
+ * sizing, appearance, and interactivity. Frames can be nested — inner
84
+ * frames override outer frames for their subtree.
85
+ *
86
+ * @example
87
+ * ```tsx
88
+ * // Horizontal toolbar with consistent spacing
89
+ * <Frame direction="horizontal" gap="md" padding="lg" align="center">
90
+ * <Button onPress={() => {}}>Save</Button>
91
+ * <Button variant="ghost" onPress={() => {}}>Cancel</Button>
92
+ * </Frame>
93
+ * ```
94
+ *
95
+ * @example
96
+ * ```tsx
97
+ * // Elevated card with primary theme
98
+ * <Frame theme="primary" elevation={2} radius="lg" padding="xl" bordered>
99
+ * <Text>Elevated card content</Text>
100
+ * </Frame>
101
+ * ```
102
+ *
103
+ * @example
104
+ * ```tsx
105
+ * // Clickable card with link
106
+ * <Frame radius="md" padding="md" bordered onPress={() => navigate('/details')}>
107
+ * <Text>Tap to navigate</Text>
108
+ * </Frame>
109
+ * ```
110
+ */
111
+ export interface FrameProps {
112
+ /**
113
+ * Child elements. Inherits this Frame's theme and elevation context.
114
+ * Raw strings/numbers are auto-wrapped in `<Text>` with theme-appropriate styling.
115
+ */
116
+ readonly children: React.ReactNode;
117
+ /**
118
+ * Theme override for this frame and all descendants.
119
+ * When omitted, inherits from parent Frame or NewtoneProvider.
120
+ *
121
+ * @example
122
+ * ```tsx
123
+ * <Frame theme="primary"> // Blue-ish surface
124
+ * <Frame theme="strong"> // High-contrast surface
125
+ * ```
126
+ */
127
+ readonly theme?: ThemeName;
128
+ /**
129
+ * Surface elevation: controls background lightness and shadow.
130
+ *
131
+ * | Value | Effect |
132
+ * |:-----:|:-------|
133
+ * | -2 | Deeply sunken (inset shadow) |
134
+ * | -1 | Sunken |
135
+ * | 0 | Default surface |
136
+ * | 1 | Elevated |
137
+ * | 2 | Prominently elevated (drop shadow) |
138
+ *
139
+ * When omitted, inherits from parent Frame or defaults to 0.
140
+ */
141
+ readonly elevation?: FrameElevation;
142
+ /** Layout mode. @default 'flex' */
143
+ readonly layout?: LayoutMode;
144
+ /** Flex direction. @default 'vertical' */
145
+ readonly direction?: Direction;
146
+ /** Enable flex wrap. @default false */
147
+ readonly wrap?: boolean;
148
+ /** Reverse flex direction. @default false */
149
+ readonly reverse?: boolean;
150
+ /** CSS Grid column count (web-only, requires layout='grid'). */
151
+ readonly columns?: number;
152
+ /** CSS Grid row count (web-only, requires layout='grid'). */
153
+ readonly rows?: number;
154
+ /** Cross-axis alignment of children. */
155
+ readonly align?: Alignment;
156
+ /** Main-axis justification of children. */
157
+ readonly justify?: Justification;
158
+ /**
159
+ * Padding inside the frame.
160
+ *
161
+ * @example
162
+ * ```tsx
163
+ * <Frame padding="md" /> // uniform
164
+ * <Frame padding={16} /> // uniform px
165
+ * <Frame padding={{ x: 'lg', y: 'sm' }} /> // axis shorthand
166
+ * <Frame padding={{ top: 8, bottom: 16 }} /> // per-side
167
+ * ```
168
+ */
169
+ readonly padding?: PaddingProp;
170
+ /**
171
+ * Gap between children.
172
+ *
173
+ * @example
174
+ * ```tsx
175
+ * <Frame gap="md" /> // uniform
176
+ * <Frame gap={12} /> // uniform px
177
+ * <Frame gap={{ row: 'sm', column: 'lg' }} /> // per-axis
178
+ * ```
179
+ */
180
+ readonly gap?: GapProp;
181
+ /**
182
+ * Width sizing: `'hug'` (shrink to content), `'fill'` (expand), or fixed px.
183
+ * @example
184
+ * ```tsx
185
+ * <Frame width="fill" /> // expand to fill parent
186
+ * <Frame width={300} /> // fixed 300px
187
+ * ```
188
+ */
189
+ readonly width?: SizingMode;
190
+ /**
191
+ * Height sizing: `'hug'` (shrink to content), `'fill'` (expand), or fixed px.
192
+ * @example
193
+ * ```tsx
194
+ * <Frame height="fill" /> // expand to fill parent
195
+ * <Frame height={200} /> // fixed 200px
196
+ * ```
197
+ */
198
+ readonly height?: SizingMode;
199
+ /** Minimum width in pixels. */
200
+ readonly minWidth?: number;
201
+ /** Maximum width in pixels. */
202
+ readonly maxWidth?: number;
203
+ /** Minimum height in pixels. */
204
+ readonly minHeight?: number;
205
+ /** Maximum height in pixels. */
206
+ readonly maxHeight?: number;
207
+ /**
208
+ * Border radius.
209
+ *
210
+ * @example
211
+ * ```tsx
212
+ * <Frame radius="md" /> // uniform token
213
+ * <Frame radius={8} /> // uniform px
214
+ * <Frame radius={{ topLeft: 'lg', topRight: 'lg' }} /> // per-corner
215
+ * <Frame radius="pill" /> // fully rounded
216
+ * ```
217
+ */
218
+ readonly radius?: RadiusProp;
219
+ /** Show 1px border using theme border color. @default false */
220
+ readonly bordered?: boolean;
221
+ /** Press handler — switches rendering from View to Pressable. */
222
+ readonly onPress?: (event: GestureResponderEvent) => void;
223
+ /** Navigation URL — switches rendering to Pressable with link role. */
224
+ readonly href?: string;
225
+ /** Disable interaction. @default false */
226
+ readonly disabled?: boolean;
227
+ /** Accessible label read by screen readers. Use for icon-only or non-textual frames. */
228
+ readonly accessibilityLabel?: string;
229
+ /** Additional hint read after the label (e.g. "Opens settings page"). */
230
+ readonly accessibilityHint?: string;
231
+ /** Test identifier — maps to `data-testid` on web. Used by testing libraries. */
232
+ readonly testID?: string;
233
+ /** DOM id — maps to `id` attribute on web. Used for anchors and scroll targets. */
234
+ readonly nativeID?: string;
235
+ /** Ref to the underlying View or Pressable element. */
236
+ readonly ref?: React.Ref<View>;
237
+ /** Custom style overrides (applied last). */
238
+ readonly style?: ViewStyle | ViewStyle[];
239
+ }
240
+ //# sourceMappingURL=Frame.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.types.d.ts","sourceRoot":"","sources":["../../../src/primitives/Frame/Frame.types.ts"],"names":[],"mappings":"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"}
@@ -1,39 +1,39 @@
1
1
  import type { ViewStyle } from 'react-native';
2
- import type { ResolvedTokens } from '../tokens/types';
2
+ import type { ResolvedTokens } from '../../tokens/types';
3
3
  import type { SpacingValue, PaddingProp, GapProp, RadiusValue, RadiusProp, SizingMode, Direction, Alignment, Justification } from './Frame.types';
4
- /** Resolve a spacing token or number to a pixel value */
4
+ /** Convert a spacing token name (like 'md') or raw number into pixels. */
5
5
  export declare function resolveSpacing(value: SpacingValue, tokens: ResolvedTokens): number;
6
- /** Resolve padding prop to per-side pixel values */
6
+ /** Convert a padding prop into pixel values for all four sides. */
7
7
  export declare function resolvePadding(prop: PaddingProp, tokens: ResolvedTokens): {
8
8
  readonly top: number;
9
9
  readonly right: number;
10
10
  readonly bottom: number;
11
11
  readonly left: number;
12
12
  };
13
- /** Resolve gap prop to rowGap/columnGap pixel values */
13
+ /** Convert a gap prop into row and column gap pixel values. */
14
14
  export declare function resolveGap(prop: GapProp, tokens: ResolvedTokens): {
15
15
  readonly rowGap: number;
16
16
  readonly columnGap: number;
17
17
  };
18
- /** Resolve a radius token or number to a pixel value */
18
+ /** Convert a radius token name (like 'lg') or raw number into pixels. */
19
19
  export declare function resolveRadius(value: RadiusValue, tokens: ResolvedTokens): number;
20
- /** Resolved per-corner radius values */
20
+ /** Pixel values for each corner of a rounded rectangle. */
21
21
  export interface ResolvedCorners {
22
22
  readonly topLeft: number;
23
23
  readonly topRight: number;
24
24
  readonly bottomLeft: number;
25
25
  readonly bottomRight: number;
26
26
  }
27
- /** Resolve radius prop to per-corner pixel values */
27
+ /** Convert a radius prop into pixel values for all four corners. */
28
28
  export declare function resolveRadiusCorners(prop: RadiusProp, tokens: ResolvedTokens): ResolvedCorners;
29
- /** Check if any corner has a positive radius (for auto-clip) */
29
+ /** Check if any corner is rounded (used to decide whether to clip overflowing content). */
30
30
  export declare function hasPositiveRadius(corners: ResolvedCorners): boolean;
31
- /** Resolve width/height sizing modes to ViewStyle properties */
31
+ /** Convert width/height sizing modes to style properties. */
32
32
  export declare function resolveSizing(width: SizingMode | undefined, height: SizingMode | undefined): ViewStyle;
33
- /** Resolve alignment prop to ViewStyle alignItems */
33
+ /** Convert our alignment name to the flexbox value React Native expects. */
34
34
  export declare function resolveAlignment(align: Alignment): ViewStyle['alignItems'];
35
- /** Resolve justification prop to ViewStyle justifyContent */
35
+ /** Convert our justification name to the flexbox value React Native expects. */
36
36
  export declare function resolveJustification(justify: Justification): ViewStyle['justifyContent'];
37
- /** Resolve direction + reverse to ViewStyle flexDirection */
37
+ /** Convert direction ('horizontal'/'vertical') + reverse flag to flexbox direction. */
38
38
  export declare function resolveFlexDirection(direction: Direction, reverse: boolean): ViewStyle['flexDirection'];
39
39
  //# sourceMappingURL=Frame.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.utils.d.ts","sourceRoot":"","sources":["../../../src/primitives/Frame/Frame.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EACV,YAAY,EAGZ,WAAW,EACX,OAAO,EACP,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACd,MAAM,eAAe,CAAC;AAMvB,0EAA0E;AAC1E,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,cAAc,GACrB,MAAM,CAKR;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAC5B,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,cAAc,GACrB;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAyBlG;AAED,+DAA+D;AAC/D,wBAAgB,UAAU,CACxB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,cAAc,GACrB;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAazD;AAMD,yEAAyE;AACzE,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,cAAc,GACrB,MAAM,CAGR;AAED,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,cAAc,GACrB,eAAe,CAejB;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAKnE;AAKD,6DAA6D;AAC7D,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,MAAM,EAAE,UAAU,GAAG,SAAS,GAC7B,SAAS,CA8BX;AAoCD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,CAE1E;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAExF;AAED,uFAAuF;AACvF,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,GACf,SAAS,CAAC,eAAe,CAAC,CAM5B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/Frame/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,OAAO,EACP,WAAW,EACX,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import type { IconProps } from './Icon.types';
3
+ /**
4
+ * Material Symbols icon component with variable font support.
5
+ *
6
+ * Uses global icon configuration (variant, weight, auto-grade) from theme config,
7
+ * with per-instance control over size, fill, and color.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * <Icon name="home" />
12
+ * <Icon name="settings" size={24} fill={1} />
13
+ * <Icon name="check" color="#00ff00" />
14
+ * ```
15
+ */
16
+ export declare function Icon({ name, size, opticalSize, fill, color, elevation, style, onPress, accessibilityLabel, testID, nativeID, ref, }: IconProps): React.JSX.Element;
17
+ //# sourceMappingURL=Icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../src/primitives/Icon/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;;;;;;;GAYG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,IAAQ,EACR,KAAK,EACL,SAAa,EACb,KAAK,EACL,OAAO,EAEP,kBAAkB,EAElB,MAAM,EACN,QAAQ,EACR,GAAG,GACJ,EAAE,SAAS,qBAsDX"}
@@ -0,0 +1,55 @@
1
+ import type { Text as RNText, TextStyle } from 'react-native';
2
+ import type { ElevationLevel } from '../../theme/types';
3
+ /**
4
+ * Props for Icon — Material Symbols icon with variable font support.
5
+ *
6
+ * Uses the icon variant, weight, and grade from the theme config.
7
+ * Per-instance control over size, fill, and color.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * <Icon name="home" />
12
+ * <Icon name="settings" size={24} fill={1} />
13
+ * <Icon name="check" color="#00ff00" />
14
+ * <Icon name="delete" size={20} onPress={() => handleDelete()} />
15
+ * ```
16
+ *
17
+ * @see {@link https://fonts.google.com/icons Material Symbols icon reference}
18
+ */
19
+ export interface IconProps {
20
+ /**
21
+ * Material Symbols ligature name.
22
+ *
23
+ * @example `'home'`, `'settings'`, `'check'`, `'expand_more'`, `'delete'`, `'add'`, `'search'`
24
+ * @see {@link https://fonts.google.com/icons Browse all icons}
25
+ */
26
+ readonly name: string;
27
+ /** Font size in pixels. @default tokens.typography.size.base (~16px) */
28
+ readonly size?: number;
29
+ /** Optical size for variable font axis. Adjusts stroke weight for readability at small sizes. @default same as size */
30
+ readonly opticalSize?: number;
31
+ /**
32
+ * Fill state for the icon.
33
+ *
34
+ * - `0` — Outlined (default)
35
+ * - `1` — Filled (solid)
36
+ */
37
+ readonly fill?: 0 | 1;
38
+ /** Icon color as hex string. @default tokens.textPrimary */
39
+ readonly color?: string;
40
+ /** Elevation level for token computation. @default 1 */
41
+ readonly elevation?: ElevationLevel;
42
+ /** Additional styles applied to the icon Text element. */
43
+ readonly style?: TextStyle;
44
+ /** Press handler — makes the icon tappable. */
45
+ readonly onPress?: () => void;
46
+ /** Label read by screen readers. When omitted, the icon is treated as decorative (hidden from assistive technology). */
47
+ readonly accessibilityLabel?: string;
48
+ /** Test identifier — maps to `data-testid` on web. Used by testing libraries. */
49
+ readonly testID?: string;
50
+ /** DOM id — maps to `id` attribute on web. Used for anchors and scroll targets. */
51
+ readonly nativeID?: string;
52
+ /** Ref to the underlying Text element. */
53
+ readonly ref?: React.Ref<RNText>;
54
+ }
55
+ //# sourceMappingURL=Icon.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.types.d.ts","sourceRoot":"","sources":["../../../src/primitives/Icon/Icon.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,wEAAwE;IACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,uHAAuH;IACvH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEtB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;IAEpC,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAE3B,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAI9B,wHAAwH;IACxH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAIrC,iFAAiF;IACjF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAClC"}
@@ -0,0 +1,3 @@
1
+ export { Icon } from './Icon';
2
+ export type { IconProps } from './Icon.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/Icon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import type { TextProps } from './Text.types';
3
+ /**
4
+ * Token-aware text primitive.
5
+ *
6
+ * Reads typography tokens from the nearest NewtoneProvider and maps
7
+ * semantic props (size, weight, color, font, lineHeight) to resolved values.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * <Text>Body text</Text>
12
+ * <Text size="sm" weight="semibold" color="secondary">Label</Text>
13
+ * <Text size="xl" font="display">Heading</Text>
14
+ * ```
15
+ */
16
+ export declare function Text({ children, size, weight, color, font, lineHeight, align, numberOfLines, elevation, style, accessibilityRole, testID, nativeID, ref, }: TextProps): React.JSX.Element;
17
+ //# sourceMappingURL=Text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/primitives/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,cAAc,CAAC;AAUzD;;;;;;;;;;;;GAYG;AACH,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,IAAa,EACb,MAAkB,EAClB,KAAiB,EACjB,IAAgB,EAChB,UAAqB,EACrB,KAAK,EACL,aAAa,EACb,SAAa,EACb,KAAK,EAEL,iBAAiB,EAEjB,MAAM,EACN,QAAQ,EACR,GAAG,GACJ,EAAE,SAAS,qBA4CX"}
@@ -0,0 +1,85 @@
1
+ import type { Text as RNText, TextStyle } from 'react-native';
2
+ import type { ElevationLevel } from '../../theme/types';
3
+ /** Typography size tokens — maps to `tokens.typography.size.*` pixel values. */
4
+ export type TextSize = 'xs' | 'sm' | 'base' | 'md' | 'lg' | 'xl' | 'xxl';
5
+ /** Typography weight tokens — maps to `tokens.typography.weight.*` numeric values. */
6
+ export type TextWeight = 'regular' | 'medium' | 'semibold' | 'bold';
7
+ /** Semantic text color tokens — resolved from the current theme's token palette. */
8
+ export type TextColor = 'primary' | 'secondary' | 'interactive';
9
+ /** Font family tokens — maps to `tokens.typography.fonts.*` font stacks. */
10
+ export type TextFont = 'default' | 'display' | 'mono';
11
+ /** Line height multiplier tokens — maps to `tokens.typography.lineHeight.*` values. */
12
+ export type TextLineHeight = 'tight' | 'normal' | 'relaxed';
13
+ /** Text alignment. */
14
+ export type TextAlign = 'left' | 'center' | 'right';
15
+ /**
16
+ * Props for Text — themed typography component.
17
+ *
18
+ * All visual properties are token-driven: size, weight, color, font,
19
+ * and line height resolve from the current theme context. Use semantic
20
+ * tokens rather than raw values for consistency.
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * <Text>Default body text</Text>
25
+ * <Text size="lg" weight="bold">Heading</Text>
26
+ * <Text color="secondary" size="sm">Caption text</Text>
27
+ * <Text font="mono" size="sm">const x = 42;</Text>
28
+ * <Text numberOfLines={2}>Long text that truncates after two lines...</Text>
29
+ * ```
30
+ */
31
+ export interface TextProps {
32
+ /**
33
+ * Text content. Accepts strings, numbers, and nested `<Text>` elements
34
+ * for inline formatting (e.g., bold spans within a paragraph).
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * <Text>Plain string</Text>
39
+ * <Text>Count: {42}</Text>
40
+ * <Text>Normal <Text weight="bold">bold</Text> normal</Text>
41
+ * ```
42
+ */
43
+ readonly children: React.ReactNode;
44
+ /** Typography size token. @default 'base' */
45
+ readonly size?: TextSize;
46
+ /** Font weight token. @default 'regular' */
47
+ readonly weight?: TextWeight;
48
+ /**
49
+ * Semantic color token.
50
+ *
51
+ * - `'primary'` — Main text color (default)
52
+ * - `'secondary'` — Subdued/muted text
53
+ * - `'interactive'` — Accent color for links/actions
54
+ *
55
+ * @default 'primary'
56
+ */
57
+ readonly color?: TextColor;
58
+ /** Font family token. @default 'default' */
59
+ readonly font?: TextFont;
60
+ /** Line height multiplier token. @default 'normal' */
61
+ readonly lineHeight?: TextLineHeight;
62
+ /** Text alignment. */
63
+ readonly align?: TextAlign;
64
+ /** Maximum number of lines before truncation with ellipsis. When omitted, text wraps freely. */
65
+ readonly numberOfLines?: number;
66
+ /** Elevation level for token computation. @default 1 */
67
+ readonly elevation?: ElevationLevel;
68
+ /** Style overrides (applied last). Supports a single style or an array of styles. */
69
+ readonly style?: TextStyle | readonly TextStyle[];
70
+ /**
71
+ * Semantic role for screen readers.
72
+ *
73
+ * - `'header'` — Marks this as a heading (e.g. page title, section header)
74
+ * - `'text'` — Default text role (usually omitted)
75
+ * - `'link'` — Marks this as a navigable link
76
+ */
77
+ readonly accessibilityRole?: 'header' | 'text' | 'link';
78
+ /** Test identifier — maps to `data-testid` on web. Used by testing libraries. */
79
+ readonly testID?: string;
80
+ /** DOM id — maps to `id` attribute on web. Used for anchors and scroll targets. */
81
+ readonly nativeID?: string;
82
+ /** Ref to the underlying React Native Text element. */
83
+ readonly ref?: React.Ref<RNText>;
84
+ }
85
+ //# sourceMappingURL=Text.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.types.d.ts","sourceRoot":"","sources":["../../../src/primitives/Text/Text.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,gFAAgF;AAChF,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAEzE,sFAAsF;AACtF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEpE,oFAAoF;AACpF,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;AAEhE,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtD,uFAAuF;AACvF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5D,sBAAsB;AACtB,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAEnC,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEzB,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAE7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAE3B,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEzB,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;IAErC,sBAAsB;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAE3B,gGAAgG;IAChG,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEhC,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;IAEpC,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,SAAS,EAAE,CAAC;IAIlD;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IAIxD,iFAAiF;IACjF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,uDAAuD;IACvD,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAClC"}
@@ -0,0 +1,3 @@
1
+ export { Text } from './Text';
2
+ export type { TextProps, TextSize, TextWeight, TextColor, TextFont, TextLineHeight, TextAlign, } from './Text.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/Text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EACV,SAAS,EACT,QAAQ,EACR,UAAU,EACV,SAAS,EACT,QAAQ,EACR,cAAc,EACd,SAAS,GACV,MAAM,cAAc,CAAC"}
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import type { WrapperProps } from './Wrapper.types';
3
+ /**
4
+ * Wrapper — Lightweight, invisible layout container.
5
+ *
6
+ * Same layout API as Frame (direction, spacing, alignment, sizing)
7
+ * but with zero appearance overhead. No background, border, shadow,
8
+ * theme context, or interactivity. Always renders a plain View.
9
+ *
10
+ * Use Wrapper for structural layout. Use Frame when you need visual
11
+ * appearance or theme/elevation context.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * <Wrapper direction="horizontal" gap="md" align="center">
16
+ * <Button onPress={() => {}}>Save</Button>
17
+ * <Button variant="ghost" onPress={() => {}}>Cancel</Button>
18
+ * </Wrapper>
19
+ * ```
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * <Wrapper padding={{ x: 'lg', y: 'md' }} gap="sm">
24
+ * <Text>Spaced content with no background</Text>
25
+ * </Wrapper>
26
+ * ```
27
+ */
28
+ export declare function Wrapper({ children, direction, wrap, reverse, align, justify, padding, gap, width, height, minWidth, maxWidth, minHeight, maxHeight, style, testID, nativeID, ref, }: WrapperProps): React.JSX.Element;
29
+ //# sourceMappingURL=Wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../../src/primitives/Wrapper/Wrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,OAAO,EACP,KAAK,EACL,OAAO,EACP,OAAO,EACP,GAAG,EACH,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,KAAK,EAEL,MAAM,EACN,QAAQ,EACR,GAAG,GACJ,EAAE,YAAY,qBAoDd"}
@@ -0,0 +1,28 @@
1
+ import type { ViewStyle } from 'react-native';
2
+ import type { ResolvedTokens } from '../../tokens/types';
3
+ import type { Direction, Alignment, Justification, PaddingProp, GapProp, SizingMode } from '../Frame/Frame.types';
4
+ export interface WrapperStyleInput {
5
+ readonly tokens: ResolvedTokens;
6
+ readonly direction?: Direction;
7
+ readonly wrap?: boolean;
8
+ readonly reverse?: boolean;
9
+ readonly align?: Alignment;
10
+ readonly justify?: Justification;
11
+ readonly padding?: PaddingProp;
12
+ readonly gap?: GapProp;
13
+ readonly width?: SizingMode;
14
+ readonly height?: SizingMode;
15
+ readonly minWidth?: number;
16
+ readonly maxWidth?: number;
17
+ readonly minHeight?: number;
18
+ readonly maxHeight?: number;
19
+ }
20
+ /**
21
+ * Build the layout styles for a Wrapper.
22
+ *
23
+ * Unlike Frame, this only handles structure (direction, spacing, sizing).
24
+ * No background, border, shadow, or radius — Wrapper is always invisible.
25
+ * Reuses the same helper functions that Frame uses for layout.
26
+ */
27
+ export declare function getWrapperStyles(input: WrapperStyleInput): ViewStyle;
28
+ //# sourceMappingURL=Wrapper.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wrapper.styles.d.ts","sourceRoot":"","sources":["../../../src/primitives/Wrapper/Wrapper.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,EACX,OAAO,EACP,UAAU,EACX,MAAM,sBAAsB,CAAC;AAU9B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,CAoEpE"}