@castui/cast-ui 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -3
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +2 -4
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Card/Card.js +4 -10
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/theme/fonts.d.ts +34 -0
- package/dist/theme/fonts.d.ts.map +1 -1
- package/dist/theme/fonts.js +57 -0
- package/dist/theme/fonts.js.map +1 -1
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -33,6 +33,12 @@ Example:
|
|
|
33
33
|
|
|
34
34
|
See [`design-tokens/DESIGN-TOKENS-SUMMARY.md`](design-tokens/DESIGN-TOKENS-SUMMARY.md) for the full token reference.
|
|
35
35
|
|
|
36
|
+
## Examples
|
|
37
|
+
|
|
38
|
+
For live examples showing Cast UI components and theming in action, see the companion repo:
|
|
39
|
+
|
|
40
|
+
**[Connagh/cast-ui-examples](https://github.com/Connagh/cast-ui-examples)** (in progress)
|
|
41
|
+
|
|
36
42
|
## Project Structure
|
|
37
43
|
|
|
38
44
|
```
|
|
@@ -42,6 +48,9 @@ cast-ui/
|
|
|
42
48
|
Button/
|
|
43
49
|
Button.tsx RN Pressable + Text, theme-aware
|
|
44
50
|
Button.stories.tsx Storybook stories
|
|
51
|
+
Card/
|
|
52
|
+
Card.tsx RN View + Text, theme-aware
|
|
53
|
+
Card.stories.tsx Storybook stories
|
|
45
54
|
theme/
|
|
46
55
|
types.ts CastTheme TypeScript interface
|
|
47
56
|
ThemeProvider.tsx React Context provider + useTheme hook
|
|
@@ -187,6 +196,7 @@ theme.semantic.paragraphSpacing.* body, editorial
|
|
|
187
196
|
theme.semantic.paragraphIndent.* editorial
|
|
188
197
|
theme.semantic.borderRadius.* small, medium, large
|
|
189
198
|
theme.component.button.* All button tokens (padding, colours, variants, states)
|
|
199
|
+
theme.component.card.* All card tokens (padding, colours, typography, elevation)
|
|
190
200
|
```
|
|
191
201
|
|
|
192
202
|
## Components
|
|
@@ -210,6 +220,33 @@ import { Button } from '@castui/cast-ui';
|
|
|
210
220
|
| `disabled` | `boolean` | `false` | Disabled state |
|
|
211
221
|
| `backgroundColor` | `string` | - | Override background colour |
|
|
212
222
|
|
|
223
|
+
### Card
|
|
224
|
+
|
|
225
|
+
React Native `View` + `Text`. Consumes tokens from `theme.component.card` and `theme.semantic`.
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
import { Card, Button } from '@castui/cast-ui';
|
|
229
|
+
|
|
230
|
+
<Card
|
|
231
|
+
title="Title"
|
|
232
|
+
subtitle="Subtitle"
|
|
233
|
+
body="Body"
|
|
234
|
+
actions={
|
|
235
|
+
<>
|
|
236
|
+
<Button label="Action 1" variant="filled" />
|
|
237
|
+
<Button label="Action 2" variant="outline" />
|
|
238
|
+
</>
|
|
239
|
+
}
|
|
240
|
+
/>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
| Prop | Type | Default | Description |
|
|
244
|
+
|------|------|---------|-------------|
|
|
245
|
+
| `title` | `string` | required | Card heading text |
|
|
246
|
+
| `subtitle` | `string` | - | Optional subtitle below the title |
|
|
247
|
+
| `body` | `string` | - | Optional body text |
|
|
248
|
+
| `actions` | `React.ReactNode` | - | Optional actions row (e.g. Button components) |
|
|
249
|
+
|
|
213
250
|
## Font Handling
|
|
214
251
|
|
|
215
252
|
Components reference font families from the theme tokens. Font **loading** is the consumer's responsibility.
|
|
@@ -227,14 +264,41 @@ const url = googleFontsUrl('luxury');
|
|
|
227
264
|
|
|
228
265
|
### React Native / Expo
|
|
229
266
|
|
|
230
|
-
Load fonts with `expo-font` before rendering
|
|
267
|
+
Load fonts with `expo-font` before rendering. On **Android**, each weight must
|
|
268
|
+
be registered under a distinct name (the Expo Google Fonts convention) because
|
|
269
|
+
Android cannot combine a generic `fontFamily` with a numeric `fontWeight` for
|
|
270
|
+
custom fonts.
|
|
231
271
|
|
|
232
272
|
```ts
|
|
233
273
|
import { useFonts } from 'expo-font';
|
|
234
|
-
import {
|
|
235
|
-
|
|
274
|
+
import {
|
|
275
|
+
Poppins_400Regular,
|
|
276
|
+
Poppins_500Medium,
|
|
277
|
+
Poppins_700Bold,
|
|
278
|
+
} from '@expo-google-fonts/poppins';
|
|
279
|
+
|
|
280
|
+
const [loaded] = useFonts({
|
|
281
|
+
Poppins: Poppins_400Regular, // weight 400 → bare name
|
|
282
|
+
Poppins_500Medium: Poppins_500Medium, // weight 500
|
|
283
|
+
Poppins_700Bold: Poppins_700Bold, // weight 700
|
|
284
|
+
});
|
|
236
285
|
```
|
|
237
286
|
|
|
287
|
+
The naming convention is:
|
|
288
|
+
|
|
289
|
+
| Weight | Registration Key |
|
|
290
|
+
|--------|-----------------|
|
|
291
|
+
| 400 | `"FontName"` |
|
|
292
|
+
| 500 | `"FontName_500Medium"` |
|
|
293
|
+
| 700 | `"FontName_700Bold"` |
|
|
294
|
+
|
|
295
|
+
Components use `resolveFont()` internally so the correct font name is selected
|
|
296
|
+
automatically on each platform:
|
|
297
|
+
|
|
298
|
+
- **iOS / Web** — `{ fontFamily, fontWeight }` passed through unchanged.
|
|
299
|
+
- **Android** — maps to the weight-specific registered name (e.g. `"Poppins_700Bold"`) and sets `fontWeight: 'normal'`.
|
|
300
|
+
- **system-ui** — omits `fontFamily` (platform default) on all platforms.
|
|
301
|
+
|
|
238
302
|
The **White Label** theme uses `system-ui` (platform default) and requires no font loading.
|
|
239
303
|
|
|
240
304
|
| Theme | Fonts to Load |
|
|
@@ -244,6 +308,11 @@ The **White Label** theme uses `system-ui` (platform default) and requires no fo
|
|
|
244
308
|
| Corporate | Inter, Merriweather |
|
|
245
309
|
| Luxury | Playfair Display, Cormorant Garamond |
|
|
246
310
|
|
|
311
|
+
> **Custom Themes:** The convention works for any font — register each weight
|
|
312
|
+
> under `FontName`, `FontName_500Medium`, and `FontName_700Bold` and
|
|
313
|
+
> `resolveFont()` will handle the rest. The `ANDROID_WEIGHT_SUFFIX` map is
|
|
314
|
+
> exported if you need to build registration keys programmatically.
|
|
315
|
+
|
|
247
316
|
## Consumer Installation
|
|
248
317
|
|
|
249
318
|
```bash
|
|
@@ -261,6 +330,8 @@ import {
|
|
|
261
330
|
consumer,
|
|
262
331
|
corporate,
|
|
263
332
|
luxury,
|
|
333
|
+
resolveFont,
|
|
334
|
+
ANDROID_WEIGHT_SUFFIX,
|
|
264
335
|
} from '@castui/cast-ui';
|
|
265
336
|
```
|
|
266
337
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAOtB,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;IAChE,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,OAAkB,EAClB,eAAe,EACf,QAAgB,EAChB,GAAG,cAAc,EAClB,EAAE,WAAW,2CAuEb"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
3
|
import { Pressable, Text, } from 'react-native';
|
|
4
|
-
import { useTheme } from '../../theme';
|
|
4
|
+
import { useTheme, resolveFont } from '../../theme';
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
6
6
|
// Component
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
@@ -58,13 +58,11 @@ export function Button({ label, variant = 'filled', backgroundColor, disabled =
|
|
|
58
58
|
}),
|
|
59
59
|
opacity: disabled ? 0.6 : 1,
|
|
60
60
|
};
|
|
61
|
-
const fontFamily = bt.fontFamily === 'system-ui' ? undefined : bt.fontFamily;
|
|
62
61
|
const textStyle = {
|
|
63
62
|
color: resolveContent(),
|
|
64
63
|
fontSize: bt.textSize,
|
|
65
|
-
fontWeight: String(bt.fontWeight),
|
|
66
64
|
lineHeight: bt.textSize * bt.lineHeight,
|
|
67
|
-
...(fontFamily
|
|
65
|
+
...resolveFont(bt.fontFamily, bt.fontWeight),
|
|
68
66
|
};
|
|
69
67
|
return (_jsx(Pressable, { ...pressableProps, disabled: disabled, style: containerStyle, ...{
|
|
70
68
|
onHoverIn: () => setHovered(true),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EACL,SAAS,EACT,IAAI,
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/Card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAOtB,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IACzD,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAMD;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,GAAG,SAAS,EACb,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/Card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAOtB,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;IACzD,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAMD;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,GAAG,SAAS,EACb,EAAE,SAAS,2CA0DX"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { View, Text, } from 'react-native';
|
|
3
|
-
import { useTheme } from '../../theme';
|
|
3
|
+
import { useTheme, resolveFont } from '../../theme';
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
5
5
|
// Component
|
|
6
6
|
// ---------------------------------------------------------------------------
|
|
@@ -28,32 +28,26 @@ export function Card({ title, subtitle, body, actions, ...viewProps }) {
|
|
|
28
28
|
? { boxShadow: '0 1px 3px rgba(0,0,0,0.12)' }
|
|
29
29
|
: {}),
|
|
30
30
|
};
|
|
31
|
-
const headingFontFamily = ct.headingFontFamily === 'system-ui' ? undefined : ct.headingFontFamily;
|
|
32
31
|
const titleStyle = {
|
|
33
32
|
fontSize: ct.headingSize,
|
|
34
|
-
fontWeight: String(ct.headingWeight),
|
|
35
33
|
lineHeight: ct.headingSize * sem.lineHeight.body,
|
|
36
34
|
letterSpacing: sem.letterSpacing.heading,
|
|
37
35
|
color: sem.color.onSurface,
|
|
38
|
-
...(headingFontFamily
|
|
36
|
+
...resolveFont(ct.headingFontFamily, ct.headingWeight),
|
|
39
37
|
};
|
|
40
|
-
const subtitleFontFamily = sem.fontFamily.interface === 'system-ui' ? undefined : sem.fontFamily.interface;
|
|
41
38
|
const subtitleStyle = {
|
|
42
39
|
fontSize: sem.fontSize.small,
|
|
43
|
-
fontWeight: String(sem.fontWeight.body),
|
|
44
40
|
lineHeight: sem.fontSize.small * sem.lineHeight.body,
|
|
45
41
|
letterSpacing: sem.letterSpacing.body,
|
|
46
42
|
color: sem.color.onSurfaceMuted,
|
|
47
|
-
...(
|
|
43
|
+
...resolveFont(sem.fontFamily.interface, sem.fontWeight.body),
|
|
48
44
|
};
|
|
49
|
-
const bodyFontFamily = ct.bodyFontFamily === 'system-ui' ? undefined : ct.bodyFontFamily;
|
|
50
45
|
const bodyStyle = {
|
|
51
46
|
fontSize: ct.bodySize,
|
|
52
|
-
fontWeight: String(ct.bodyWeight),
|
|
53
47
|
lineHeight: ct.bodySize * sem.lineHeight.body,
|
|
54
48
|
letterSpacing: sem.letterSpacing.body,
|
|
55
49
|
color: sem.color.onSurfaceMuted,
|
|
56
|
-
...(bodyFontFamily
|
|
50
|
+
...resolveFont(ct.bodyFontFamily, ct.bodyWeight),
|
|
57
51
|
};
|
|
58
52
|
const actionsStyle = {
|
|
59
53
|
flexDirection: 'row',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/components/Card/Card.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,IAAI,EACJ,IAAI,GAIL,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../src/components/Card/Card.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,IAAI,EACJ,IAAI,GAIL,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiBpD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAC,EACnB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,GAAG,SAAS,EACF;IACV,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAChC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;IAE3B,8EAA8E;IAE9E,MAAM,cAAc,GAAc;QAChC,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,GAAG,EAAE,EAAE,CAAC,GAAG;QACX,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,eAAe,EAAE,EAAE,CAAC,UAAU;QAC9B,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,WAAW,EAAE,EAAE,CAAC,MAAM;QACtB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,2EAA2E;QAC3E,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC;YAClB,CAAC,CAAE,EAAE,SAAS,EAAE,4BAA4B,EAA8B;YAC1E,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,MAAM,UAAU,GAAc;QAC5B,QAAQ,EAAE,EAAE,CAAC,WAAW;QACxB,UAAU,EAAE,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI;QAChD,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,OAAO;QACxC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS;QAC1B,GAAG,WAAW,CAAC,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,aAAa,CAAC;KACvD,CAAC;IAEF,MAAM,aAAa,GAAc;QAC/B,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK;QAC5B,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI;QACpD,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI;QACrC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc;QAC/B,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;KAC9D,CAAC;IAEF,MAAM,SAAS,GAAc;QAC3B,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,UAAU,EAAE,EAAE,CAAC,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI;QAC7C,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI;QACrC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc;QAC/B,GAAG,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,UAAU,CAAC;KACjD,CAAC;IAEF,MAAM,YAAY,GAAc;QAC9B,aAAa,EAAE,KAAK;QACpB,GAAG,EAAE,EAAE,CAAC,GAAG;KACZ,CAAC;IAEF,OAAO,CACL,MAAC,IAAI,OAAK,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAC,SAAS,aACrE,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,YAAG,KAAK,GAAQ,EACtC,QAAQ,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,aAAa,YAAG,QAAQ,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC/D,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YAAG,IAAI,GAAQ,CAAC,CAAC,CAAC,IAAI,EACnD,OAAO,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,YAAG,OAAO,GAAQ,CAAC,CAAC,CAAC,IAAI,IACxD,CACR,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { CastThemeProvider, useTheme } from './theme';
|
|
2
2
|
export type { CastThemeProviderProps } from './theme';
|
|
3
3
|
export type { CastTheme, ThemeName, SemanticTokens, ComponentTokens, ButtonTokens, CardTokens, } from './theme';
|
|
4
|
-
export { THEME_FONT_FAMILIES, googleFontsUrl } from './theme';
|
|
4
|
+
export { THEME_FONT_FAMILIES, googleFontsUrl, resolveFont, ANDROID_WEIGHT_SUFFIX } from './theme';
|
|
5
5
|
export { whiteLabel, consumer, corporate, luxury, } from './tokens/generated';
|
|
6
6
|
export { Button } from './components/Button/Button';
|
|
7
7
|
export type { ButtonProps, ButtonVariant } from './components/Button/Button';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACtD,YAAY,EACV,SAAS,EACT,SAAS,EACT,cAAc,EACd,eAAe,EACf,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACtD,YAAY,EACV,SAAS,EACT,SAAS,EACT,cAAc,EACd,eAAe,EACf,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGlG,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,GACP,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE7E,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
// Theme system
|
|
5
5
|
export { CastThemeProvider, useTheme } from './theme';
|
|
6
|
-
export { THEME_FONT_FAMILIES, googleFontsUrl } from './theme';
|
|
6
|
+
export { THEME_FONT_FAMILIES, googleFontsUrl, resolveFont, ANDROID_WEIGHT_SUFFIX } from './theme';
|
|
7
7
|
// Theme objects
|
|
8
8
|
export { whiteLabel, consumer, corporate, luxury, } from './tokens/generated';
|
|
9
9
|
// Components
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAUtD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAUtD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElG,gBAAgB;AAChB,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,GACP,MAAM,oBAAoB,CAAC;AAE5B,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/theme/fonts.d.ts
CHANGED
|
@@ -17,7 +17,23 @@
|
|
|
17
17
|
*
|
|
18
18
|
* **Web / Storybook** – fonts are loaded via `<link>` tags in
|
|
19
19
|
* `.storybook/preview-head.html`. No runtime font loading is needed.
|
|
20
|
+
*
|
|
21
|
+
* ### Android font registration convention
|
|
22
|
+
*
|
|
23
|
+
* Android cannot combine a generic `fontFamily` with a numeric `fontWeight`
|
|
24
|
+
* for custom fonts — it silently falls back to the system font. Instead,
|
|
25
|
+
* each weight must be registered under a distinct name that matches the Expo
|
|
26
|
+
* Google Fonts convention:
|
|
27
|
+
*
|
|
28
|
+
* | Weight | Registration key |
|
|
29
|
+
* |--------|------------------------------|
|
|
30
|
+
* | 400 | `"FontName"` |
|
|
31
|
+
* | 500 | `"FontName_500Medium"` |
|
|
32
|
+
* | 700 | `"FontName_700Bold"` |
|
|
33
|
+
*
|
|
34
|
+
* Use {@link resolveFont} in component styles to transparently handle this.
|
|
20
35
|
*/
|
|
36
|
+
import { type TextStyle } from 'react-native';
|
|
21
37
|
import type { ThemeName } from './types';
|
|
22
38
|
/**
|
|
23
39
|
* Map of Google Fonts family names used by each theme.
|
|
@@ -30,4 +46,22 @@ export declare const THEME_FONT_FAMILIES: Record<ThemeName, string[]>;
|
|
|
30
46
|
* Useful if you need to programmatically inject font links on the web.
|
|
31
47
|
*/
|
|
32
48
|
export declare function googleFontsUrl(themeName: ThemeName): string | null;
|
|
49
|
+
/**
|
|
50
|
+
* Suffix appended to a font family name on Android to select a specific
|
|
51
|
+
* weight. Matches the Expo Google Fonts registration convention.
|
|
52
|
+
*
|
|
53
|
+
* Weight 400 maps to the bare family name (empty suffix).
|
|
54
|
+
*/
|
|
55
|
+
export declare const ANDROID_WEIGHT_SUFFIX: Record<number, string>;
|
|
56
|
+
/**
|
|
57
|
+
* Return the correct `fontFamily` / `fontWeight` style props for the
|
|
58
|
+
* current platform.
|
|
59
|
+
*
|
|
60
|
+
* - **iOS / Web** — returns `{ fontFamily, fontWeight }` unchanged.
|
|
61
|
+
* - **Android** — maps to a weight-specific registered font name
|
|
62
|
+
* (e.g. `"Poppins_700Bold"`) and resets `fontWeight` to `'normal'`.
|
|
63
|
+
* - **system-ui** — omits `fontFamily` entirely (platform default)
|
|
64
|
+
* and passes `fontWeight` through on all platforms.
|
|
65
|
+
*/
|
|
66
|
+
export declare function resolveFont(fontFamily: string, fontWeight: number): Pick<TextStyle, 'fontFamily' | 'fontWeight'>;
|
|
33
67
|
//# sourceMappingURL=fonts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/theme/fonts.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/theme/fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAK3D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CASlE;AAMD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIxD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,YAAY,CAAC,CAmB9C"}
|
package/dist/theme/fonts.js
CHANGED
|
@@ -17,7 +17,23 @@
|
|
|
17
17
|
*
|
|
18
18
|
* **Web / Storybook** – fonts are loaded via `<link>` tags in
|
|
19
19
|
* `.storybook/preview-head.html`. No runtime font loading is needed.
|
|
20
|
+
*
|
|
21
|
+
* ### Android font registration convention
|
|
22
|
+
*
|
|
23
|
+
* Android cannot combine a generic `fontFamily` with a numeric `fontWeight`
|
|
24
|
+
* for custom fonts — it silently falls back to the system font. Instead,
|
|
25
|
+
* each weight must be registered under a distinct name that matches the Expo
|
|
26
|
+
* Google Fonts convention:
|
|
27
|
+
*
|
|
28
|
+
* | Weight | Registration key |
|
|
29
|
+
* |--------|------------------------------|
|
|
30
|
+
* | 400 | `"FontName"` |
|
|
31
|
+
* | 500 | `"FontName_500Medium"` |
|
|
32
|
+
* | 700 | `"FontName_700Bold"` |
|
|
33
|
+
*
|
|
34
|
+
* Use {@link resolveFont} in component styles to transparently handle this.
|
|
20
35
|
*/
|
|
36
|
+
import { Platform } from 'react-native';
|
|
21
37
|
/**
|
|
22
38
|
* Map of Google Fonts family names used by each theme.
|
|
23
39
|
* The `system-ui` entry means "use the platform default" and requires
|
|
@@ -42,4 +58,45 @@ export function googleFontsUrl(themeName) {
|
|
|
42
58
|
.join('&');
|
|
43
59
|
return `https://fonts.googleapis.com/css2?${params}&display=swap`;
|
|
44
60
|
}
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
// Android font-weight resolution
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
/**
|
|
65
|
+
* Suffix appended to a font family name on Android to select a specific
|
|
66
|
+
* weight. Matches the Expo Google Fonts registration convention.
|
|
67
|
+
*
|
|
68
|
+
* Weight 400 maps to the bare family name (empty suffix).
|
|
69
|
+
*/
|
|
70
|
+
export const ANDROID_WEIGHT_SUFFIX = {
|
|
71
|
+
400: '',
|
|
72
|
+
500: '_500Medium',
|
|
73
|
+
700: '_700Bold',
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Return the correct `fontFamily` / `fontWeight` style props for the
|
|
77
|
+
* current platform.
|
|
78
|
+
*
|
|
79
|
+
* - **iOS / Web** — returns `{ fontFamily, fontWeight }` unchanged.
|
|
80
|
+
* - **Android** — maps to a weight-specific registered font name
|
|
81
|
+
* (e.g. `"Poppins_700Bold"`) and resets `fontWeight` to `'normal'`.
|
|
82
|
+
* - **system-ui** — omits `fontFamily` entirely (platform default)
|
|
83
|
+
* and passes `fontWeight` through on all platforms.
|
|
84
|
+
*/
|
|
85
|
+
export function resolveFont(fontFamily, fontWeight) {
|
|
86
|
+
const weight = String(fontWeight);
|
|
87
|
+
// system-ui → platform default; just pass through fontWeight
|
|
88
|
+
if (fontFamily === 'system-ui') {
|
|
89
|
+
return { fontWeight: weight };
|
|
90
|
+
}
|
|
91
|
+
// Android needs a weight-specific registered name
|
|
92
|
+
if (Platform.OS === 'android') {
|
|
93
|
+
const suffix = ANDROID_WEIGHT_SUFFIX[fontWeight] ?? '';
|
|
94
|
+
return {
|
|
95
|
+
fontFamily: `${fontFamily}${suffix}`,
|
|
96
|
+
fontWeight: 'normal',
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// iOS / Web – pass through unchanged
|
|
100
|
+
return { fontFamily, fontWeight: weight };
|
|
101
|
+
}
|
|
45
102
|
//# sourceMappingURL=fonts.js.map
|
package/dist/theme/fonts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../src/theme/fonts.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../src/theme/fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,QAAQ,EAAkB,MAAM,cAAc,CAAC;AAGxD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC9D,aAAa,EAAE,EAAE,EAA8C,iBAAiB;IAChF,QAAQ,EAAE,CAAC,SAAS,CAAC,EAA0C,iBAAiB;IAChF,SAAS,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,EAA2B,wBAAwB;IACvF,MAAM,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,EAAa,kBAAkB;CAClF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAoB;IACjD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,MAAM,GAAG,QAAQ;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC;SAC9D,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,qCAAqC,MAAM,eAAe,CAAC;AACpE,CAAC;AAED,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,UAAU;CAChB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,UAAkB,EAClB,UAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAA4B,CAAC;IAE7D,6DAA6D;IAC7D,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,kDAAkD;IAClD,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvD,OAAO;YACL,UAAU,EAAE,GAAG,UAAU,GAAG,MAAM,EAAE;YACpC,UAAU,EAAE,QAAQ;SACrB,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC"}
|
package/dist/theme/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { CastThemeProvider, useTheme } from './ThemeProvider';
|
|
2
2
|
export type { CastThemeProviderProps } from './ThemeProvider';
|
|
3
|
-
export { THEME_FONT_FAMILIES, googleFontsUrl } from './fonts';
|
|
3
|
+
export { THEME_FONT_FAMILIES, googleFontsUrl, resolveFont, ANDROID_WEIGHT_SUFFIX } from './fonts';
|
|
4
4
|
export type { CastTheme, ThemeName, SemanticTokens, SemanticColors, SemanticFontFamily, SemanticFontSize, SemanticFontWeight, SemanticLineHeight, SemanticLetterSpacing, SemanticParagraphSpacing, SemanticParagraphIndent, SemanticBorderRadius, ComponentTokens, ButtonTokens, ButtonVariantTokens, ButtonOutlineTokens, ButtonStateTokens, CardTokens, } from './types';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9D,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9D,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAClG,YAAY,EACV,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC"}
|
package/dist/theme/index.js
CHANGED
package/dist/theme/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
|
package/package.json
CHANGED