@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.
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.styles.d.ts +64 -1
- package/dist/Popover/Popover.styles.d.ts.map +1 -1
- package/dist/Select/Select.d.ts.map +1 -1
- package/dist/_COMPONENT_TEMPLATE/ComponentName.d.ts +70 -0
- package/dist/_COMPONENT_TEMPLATE/ComponentName.d.ts.map +1 -0
- package/dist/_COMPONENT_TEMPLATE/ComponentName.styles.d.ts +22 -0
- package/dist/_COMPONENT_TEMPLATE/ComponentName.styles.d.ts.map +1 -0
- package/dist/_COMPONENT_TEMPLATE/ComponentName.types.d.ts +45 -0
- package/dist/_COMPONENT_TEMPLATE/ComponentName.types.d.ts.map +1 -0
- package/dist/_COMPONENT_TEMPLATE/index.d.ts +3 -0
- package/dist/_COMPONENT_TEMPLATE/index.d.ts.map +1 -0
- package/dist/fonts/GoogleFontLoader.d.ts.map +1 -1
- package/dist/fonts/IconFontLoader.d.ts.map +1 -1
- package/dist/index.cjs +371 -74
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +370 -76
- package/dist/index.js.map +1 -1
- package/dist/{Frame → primitives/Frame}/Frame.d.ts +1 -1
- package/dist/primitives/Frame/Frame.d.ts.map +1 -0
- package/dist/{Frame → primitives/Frame}/Frame.styles.d.ts +11 -2
- package/dist/primitives/Frame/Frame.styles.d.ts.map +1 -0
- package/dist/primitives/Frame/Frame.types.d.ts +240 -0
- package/dist/primitives/Frame/Frame.types.d.ts.map +1 -0
- package/dist/{Frame → primitives/Frame}/Frame.utils.d.ts +12 -12
- package/dist/primitives/Frame/Frame.utils.d.ts.map +1 -0
- package/dist/primitives/Frame/index.d.ts.map +1 -0
- package/dist/primitives/Icon/Icon.d.ts +17 -0
- package/dist/primitives/Icon/Icon.d.ts.map +1 -0
- package/dist/primitives/Icon/Icon.types.d.ts +55 -0
- package/dist/primitives/Icon/Icon.types.d.ts.map +1 -0
- package/dist/primitives/Icon/index.d.ts +3 -0
- package/dist/primitives/Icon/index.d.ts.map +1 -0
- package/dist/primitives/Text/Text.d.ts +17 -0
- package/dist/primitives/Text/Text.d.ts.map +1 -0
- package/dist/primitives/Text/Text.types.d.ts +85 -0
- package/dist/primitives/Text/Text.types.d.ts.map +1 -0
- package/dist/primitives/Text/index.d.ts +3 -0
- package/dist/primitives/Text/index.d.ts.map +1 -0
- package/dist/primitives/Wrapper/Wrapper.d.ts +29 -0
- package/dist/primitives/Wrapper/Wrapper.d.ts.map +1 -0
- package/dist/primitives/Wrapper/Wrapper.styles.d.ts +28 -0
- package/dist/primitives/Wrapper/Wrapper.styles.d.ts.map +1 -0
- package/dist/primitives/Wrapper/Wrapper.types.d.ts +113 -0
- package/dist/primitives/Wrapper/Wrapper.types.d.ts.map +1 -0
- package/dist/primitives/Wrapper/index.d.ts +3 -0
- package/dist/primitives/Wrapper/index.d.ts.map +1 -0
- package/dist/primitives/index.d.ts +12 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/useFocusVisible.d.ts +29 -0
- package/dist/primitives/useFocusVisible.d.ts.map +1 -0
- package/dist/theme/defaults.d.ts.map +1 -1
- package/dist/theme/types.d.ts +13 -6
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/tokens/computeTokens.d.ts +13 -6
- package/dist/tokens/computeTokens.d.ts.map +1 -1
- package/dist/tokens/types.d.ts +16 -7
- package/dist/tokens/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Button/Button.styles.ts +9 -9
- package/src/Button/Button.tsx +1 -1
- package/src/Card/Card.styles.ts +1 -1
- package/src/ColorScaleSlider/ColorScaleSlider.styles.ts +1 -1
- package/src/HueSlider/HueSlider.styles.ts +1 -1
- package/src/Popover/Popover.styles.ts +5 -1
- package/src/Popover/Popover.tsx +3 -1
- package/src/Select/Select.styles.ts +9 -9
- package/src/Select/Select.tsx +2 -3
- package/src/Select/SelectOption.tsx +6 -6
- package/src/Slider/Slider.styles.ts +1 -1
- package/src/TextInput/TextInput.styles.ts +3 -3
- package/src/Toggle/Toggle.styles.ts +1 -1
- package/src/_COMPONENT_TEMPLATE/ComponentName.styles.ts +29 -0
- package/src/_COMPONENT_TEMPLATE/ComponentName.tsx +106 -0
- package/src/_COMPONENT_TEMPLATE/ComponentName.types.ts +86 -0
- package/src/_COMPONENT_TEMPLATE/index.ts +2 -0
- package/src/fonts/GoogleFontLoader.tsx +2 -0
- package/src/fonts/IconFontLoader.tsx +2 -0
- package/src/index.ts +22 -5
- package/src/{Frame → primitives/Frame}/Frame.styles.ts +46 -9
- package/src/{Frame → primitives/Frame}/Frame.tsx +90 -16
- package/src/primitives/Frame/Frame.types.ts +315 -0
- package/src/{Frame → primitives/Frame}/Frame.utils.ts +56 -20
- package/src/primitives/Icon/Icon.tsx +89 -0
- package/src/primitives/Icon/Icon.types.ts +70 -0
- package/src/primitives/Icon/index.ts +2 -0
- package/src/primitives/Text/Text.tsx +90 -0
- package/src/primitives/Text/Text.types.ts +108 -0
- package/src/primitives/Text/index.ts +10 -0
- package/src/primitives/Wrapper/Wrapper.styles.ts +113 -0
- package/src/primitives/Wrapper/Wrapper.tsx +104 -0
- package/src/primitives/Wrapper/Wrapper.types.ts +149 -0
- package/src/primitives/Wrapper/index.ts +2 -0
- package/src/primitives/index.ts +46 -0
- package/src/primitives/useFocusVisible.ts +102 -0
- package/src/theme/defaults.ts +13 -6
- package/src/theme/types.ts +13 -6
- package/src/tokens/computeTokens.ts +1 -1
- package/src/tokens/types.ts +16 -7
- package/dist/Frame/Frame.d.ts.map +0 -1
- package/dist/Frame/Frame.styles.d.ts.map +0 -1
- package/dist/Frame/Frame.types.d.ts +0 -115
- package/dist/Frame/Frame.types.d.ts.map +0 -1
- package/dist/Frame/Frame.utils.d.ts.map +0 -1
- package/dist/Frame/index.d.ts.map +0 -1
- package/dist/Icon/Icon.d.ts +0 -36
- package/dist/Icon/Icon.d.ts.map +0 -1
- package/src/Frame/Frame.types.ts +0 -181
- package/src/Icon/Icon.tsx +0 -76
- /package/dist/{Frame → primitives/Frame}/index.d.ts +0 -0
- /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 '
|
|
3
|
-
import type { FrameElevation } from '
|
|
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 '
|
|
2
|
+
import type { ResolvedTokens } from '../../tokens/types';
|
|
3
3
|
import type { SpacingValue, PaddingProp, GapProp, RadiusValue, RadiusProp, SizingMode, Direction, Alignment, Justification } from './Frame.types';
|
|
4
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
|
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
|
-
/**
|
|
31
|
+
/** Convert width/height sizing modes to style properties. */
|
|
32
32
|
export declare function resolveSizing(width: SizingMode | undefined, height: SizingMode | undefined): ViewStyle;
|
|
33
|
-
/**
|
|
33
|
+
/** Convert our alignment name to the flexbox value React Native expects. */
|
|
34
34
|
export declare function resolveAlignment(align: Alignment): ViewStyle['alignItems'];
|
|
35
|
-
/**
|
|
35
|
+
/** Convert our justification name to the flexbox value React Native expects. */
|
|
36
36
|
export declare function resolveJustification(justify: Justification): ViewStyle['justifyContent'];
|
|
37
|
-
/**
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|