@newtonedev/components 0.1.8 → 0.1.10
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/fonts/measureFont.d.ts +2 -1
- package/dist/fonts/measureFont.d.ts.map +1 -1
- package/dist/index.cjs +13 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/primitives/Text/Text.d.ts +1 -1
- package/dist/primitives/Text/Text.d.ts.map +1 -1
- package/dist/primitives/Text/Text.types.d.ts +2 -0
- package/dist/primitives/Text/Text.types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/fonts/measureFont.ts +15 -2
- package/src/primitives/Text/Text.tsx +4 -1
- package/src/primitives/Text/Text.types.ts +3 -0
|
@@ -37,6 +37,6 @@ export declare function resolveTextColor(color: TextColor, tokens: UseTokensResu
|
|
|
37
37
|
* <Text role="headline" responsive>Responsive headline</Text>
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
-
declare function TextBase({ children, scope, role, color, size: sizeOverride, align, numberOfLines, elevation, style, accessibilityRole: accessibilityRoleOverride, testID, nativeID, ref, responsive, centerVertically, features, }: TextProps): React.JSX.Element;
|
|
40
|
+
declare function TextBase({ children, scope, role, color, size: sizeOverride, weight: weightOverride, align, numberOfLines, elevation, style, accessibilityRole: accessibilityRoleOverride, testID, nativeID, ref, responsive, centerVertically, features, }: TextProps): React.JSX.Element;
|
|
41
41
|
export { TextBase };
|
|
42
42
|
//# sourceMappingURL=Text.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/primitives/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAO3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;sBACT;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE;SACjF,CAAC;AAEhB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAWlF;AA0BD;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,QAAQ,CAAC,EAChB,QAAQ,EACR,KAAc,EACd,IAAa,EACb,KAAiB,EACjB,IAAI,EAAE,YAAY,EAClB,KAAK,EACL,aAAa,EACb,SAAa,EACb,KAAK,EACL,iBAAiB,EAAE,yBAAyB,EAC5C,MAAM,EACN,QAAQ,EACR,GAAG,EACH,UAAkB,EAClB,gBAAwB,EACxB,QAAQ,GACT,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/primitives/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAO3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;sBACT;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE;SACjF,CAAC;AAEhB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAWlF;AA0BD;;;;;;;;;;;;;;;;;GAiBG;AACH,iBAAS,QAAQ,CAAC,EAChB,QAAQ,EACR,KAAc,EACd,IAAa,EACb,KAAiB,EACjB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,EACtB,KAAK,EACL,aAAa,EACb,SAAa,EACb,KAAK,EACL,iBAAiB,EAAE,yBAAyB,EAC5C,MAAM,EACN,QAAQ,EACR,GAAG,EACH,UAAkB,EAClB,gBAAwB,EACxB,QAAQ,GACT,EAAE,SAAS,qBAuJX;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -66,6 +66,8 @@ export interface TextProps {
|
|
|
66
66
|
readonly color?: TextColor;
|
|
67
67
|
/** Override the role's default size. */
|
|
68
68
|
readonly size?: TextSize;
|
|
69
|
+
/** Override the role's default weight. */
|
|
70
|
+
readonly weight?: TextWeight;
|
|
69
71
|
/** Text alignment. */
|
|
70
72
|
readonly align?: TextAlign;
|
|
71
73
|
/** Maximum number of lines before truncation with ellipsis. When omitted, text wraps freely. */
|
|
@@ -1 +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,2FAA2F;AAC3F,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,+FAA+F;AAC/F,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvD,oFAAoF;AACpF,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvH,0EAA0E;AAC1E,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtG,sBAAsB;AACtB,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAEnC,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAE3B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEzB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAI3B,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEzB,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;;;;;;;OAOG;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;IAEjC;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,SAAS,EAAE,CAAC;CACnD"}
|
|
1
|
+
{"version":3,"file":"Text.types.d.ts","sourceRoot":"","sources":["../../../src/primitives/Text/Text.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@newtonedev/components",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"description": "React + React Native Web component library for Newtone",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"react-native": ">=0.70.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@newtonedev/fonts": "
|
|
40
|
+
"@newtonedev/fonts": "^0.1.0",
|
|
41
41
|
"newtone": "^0.1.0",
|
|
42
42
|
"react-native-web": "^0.19.10"
|
|
43
43
|
},
|
package/src/fonts/measureFont.ts
CHANGED
|
@@ -5,10 +5,19 @@
|
|
|
5
5
|
const REF_STRING =
|
|
6
6
|
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ';
|
|
7
7
|
|
|
8
|
+
/** Race a promise against a timeout. Resolves with fallback if the promise doesn't settle in time. */
|
|
9
|
+
function withTimeout<T>(promise: Promise<T>, ms: number, fallback: T): Promise<T> {
|
|
10
|
+
return Promise.race([
|
|
11
|
+
promise,
|
|
12
|
+
new Promise<T>((resolve) => setTimeout(() => resolve(fallback), ms)),
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
|
|
8
16
|
/**
|
|
9
17
|
* Measure the average character width ratio for a font using the Canvas API.
|
|
10
18
|
*
|
|
11
|
-
* Waits for the font to load via `document.fonts.load()` before measuring
|
|
19
|
+
* Waits for the font to load via `document.fonts.load()` before measuring,
|
|
20
|
+
* with a 3-second timeout to prevent hangs when fonts fail to load silently.
|
|
12
21
|
* Falls back to 0.55 if the browser context is unavailable, the font fails
|
|
13
22
|
* to load, or canvas is not supported.
|
|
14
23
|
*
|
|
@@ -29,7 +38,11 @@ export async function measureAvgCharWidth(
|
|
|
29
38
|
): Promise<number> {
|
|
30
39
|
if (typeof document === 'undefined') return 0.55;
|
|
31
40
|
try {
|
|
32
|
-
await
|
|
41
|
+
await withTimeout(
|
|
42
|
+
document.fonts.load(`${fontWeight} ${fontSize}px "${fontFamily}"`),
|
|
43
|
+
3000,
|
|
44
|
+
[] as FontFace[],
|
|
45
|
+
);
|
|
33
46
|
const canvas = document.createElement('canvas');
|
|
34
47
|
const ctx = canvas.getContext('2d');
|
|
35
48
|
if (!ctx) return 0.55;
|
|
@@ -87,6 +87,7 @@ function TextBase({
|
|
|
87
87
|
role = 'body',
|
|
88
88
|
color = 'primary',
|
|
89
89
|
size: sizeOverride,
|
|
90
|
+
weight: weightOverride,
|
|
90
91
|
align,
|
|
91
92
|
numberOfLines,
|
|
92
93
|
elevation = 1,
|
|
@@ -105,7 +106,9 @@ function TextBase({
|
|
|
105
106
|
const size = sizeOverride ?? 'md';
|
|
106
107
|
const fontSlot = tokens.typography.fonts[scope];
|
|
107
108
|
// roleWeights from config (user-customized), falling back to canonical defaults
|
|
108
|
-
const resolvedFontWeight =
|
|
109
|
+
const resolvedFontWeight = weightOverride
|
|
110
|
+
? SEMANTIC_WEIGHT_MAP[weightOverride]
|
|
111
|
+
: (config.typography.roleWeights?.[role] ?? ROLE_DEFAULT_WEIGHTS[role]);
|
|
109
112
|
|
|
110
113
|
// --- Breakpoint-aware step ---
|
|
111
114
|
const breakpoint = useBreakpoint();
|