react-native-terra-ui 0.2.0 → 0.2.2
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/CHANGELOG.md +14 -0
- package/lib/module/components/avatar/Avatar.js +51 -46
- package/lib/module/components/avatar/Avatar.js.map +1 -1
- package/lib/module/components/box/Box.js +1 -1
- package/lib/module/components/box/Box.js.map +1 -1
- package/lib/module/components/button/Button.js +52 -48
- package/lib/module/components/button/Button.js.map +1 -1
- package/lib/module/components/chip/Chip.js +29 -28
- package/lib/module/components/chip/Chip.js.map +1 -1
- package/lib/module/components/empty-state/EmptyState.js +46 -39
- package/lib/module/components/empty-state/EmptyState.js.map +1 -1
- package/lib/module/components/header/variants/LargeTitleHeader/index.js +143 -130
- package/lib/module/components/header/variants/LargeTitleHeader/index.js.map +1 -1
- package/lib/module/components/header/variants/TitleHeader/index.js +55 -47
- package/lib/module/components/header/variants/TitleHeader/index.js.map +1 -1
- package/lib/module/components/icon/Icon.js +1 -1
- package/lib/module/components/icon/Icon.js.map +1 -1
- package/lib/module/components/image/Image.js +3 -2
- package/lib/module/components/image/Image.js.map +1 -1
- package/lib/module/components/page-indicator/PageIndicatorRoot.js +1 -1
- package/lib/module/components/page-indicator/PageIndicatorRoot.js.map +1 -1
- package/lib/module/components/portal/PortalHost.js +1 -1
- package/lib/module/components/portal/PortalHost.js.map +1 -1
- package/lib/module/components/screen/Screen.js +1 -1
- package/lib/module/components/screen/Screen.js.map +1 -1
- package/lib/module/components/screen/ScreenFlashList.js +7 -4
- package/lib/module/components/screen/ScreenFlashList.js.map +1 -1
- package/lib/module/components/screen/ScreenFlatList.js +9 -5
- package/lib/module/components/screen/ScreenFlatList.js.map +1 -1
- package/lib/module/components/screen/ScreenScrollView.js +5 -3
- package/lib/module/components/screen/ScreenScrollView.js.map +1 -1
- package/lib/module/components/screen/parts/ScreenPlaceholder.js +1 -1
- package/lib/module/components/screen/parts/ScreenPlaceholder.js.map +1 -1
- package/lib/module/components/text/Text.js +1 -1
- package/lib/module/components/text/Text.js.map +1 -1
- package/lib/module/components/toast/Toast.js +2 -1
- package/lib/module/components/toast/Toast.js.map +1 -1
- package/lib/module/components/toast/parts/ToastAnimatedItem.js +2 -1
- package/lib/module/components/toast/parts/ToastAnimatedItem.js.map +1 -1
- package/lib/module/components/toolbar/Toolbar.js +37 -30
- package/lib/module/components/toolbar/Toolbar.js.map +1 -1
- package/lib/module/context/ThemeProvider.js +5 -6
- package/lib/module/context/ThemeProvider.js.map +1 -1
- package/lib/module/theme/defaults/image.js +9 -3
- package/lib/module/theme/defaults/image.js.map +1 -1
- package/lib/module/theme/registry.js +55 -2
- package/lib/module/theme/registry.js.map +1 -1
- package/lib/typescript/src/context/ThemeProvider.d.ts.map +1 -1
- package/lib/typescript/src/theme/defaults/image.d.ts.map +1 -1
- package/lib/typescript/src/theme/registry.d.ts +13 -0
- package/lib/typescript/src/theme/registry.d.ts.map +1 -1
- package/package.json +2 -4
- package/src/components/image/Image.tsx +1 -1
- package/src/context/ThemeProvider.tsx +5 -6
- package/src/theme/defaults/image.tsx +6 -3
- package/src/theme/registry.ts +61 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Children","createContext","forwardRef","useContext","useMemo","
|
|
1
|
+
{"version":3,"names":["Children","createContext","forwardRef","useContext","useMemo","StyleSheet","resolveThemeColor","Icon","Text","jsx","_jsx","jsxs","_jsxs","ToolbarGroupContext","background","tint","isGrouped","ITEM_SIZE","HIT_SLOP","LABEL_VARIANT","ToolbarButton","icon","iconSize","children","accessibilityLabel","onPress","hitSlop","style","rest","groupBackground","groupTint","fg","bg","shape","count","_styles","styles","useVariants","grouped","cell","button","Pressable","accessibilityRole","state","fill","pressed","undefined","size","color","name","renderLabel","map","child","trim","length","variant","weight","ToolbarGroup","ref","context","Provider","value","View","capsule","ToolbarRoot","Toolbar","gap","row","Group","Button","create","theme","flexDirection","alignItems","spacing","uni__dependencies","paddingHorizontal","borderRadius","radius","full","backgroundColor","borderWidth","hairlineWidth","borderColor","height","justifyContent","variants","width","label","true","false","minWidth","compoundVariants","opacity"],"sourceRoot":"../../../../src","sources":["components/toolbar/Toolbar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,14 +3,13 @@
|
|
|
3
3
|
import { createContext, useCallback, useContext, useMemo, useState } from 'react';
|
|
4
4
|
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
|
5
5
|
import { useUnistyles } from 'react-native-unistyles';
|
|
6
|
-
import {
|
|
6
|
+
import { bootstrapTerraUI } from "../theme/registry.js";
|
|
7
7
|
import { applyAccent, applyScheme, getCurrentAccent } from "../theme/runtime.js";
|
|
8
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
// Ensure the default theme is registered on first import
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
9
|
+
// Ensure the default theme is registered on first import. An app that calls
|
|
10
|
+
// `configureTerraUI` itself still wins, whichever module the bundler evaluates
|
|
11
|
+
// first — see the note on `bootstrapTerraUI`.
|
|
12
|
+
bootstrapTerraUI();
|
|
14
13
|
const ThemeContext = /*#__PURE__*/createContext(null);
|
|
15
14
|
|
|
16
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useCallback","useContext","useMemo","useState","SafeAreaProvider","useUnistyles","
|
|
1
|
+
{"version":3,"names":["createContext","useCallback","useContext","useMemo","useState","SafeAreaProvider","useUnistyles","bootstrapTerraUI","applyAccent","applyScheme","getCurrentAccent","jsx","_jsx","ThemeContext","TerraUIProvider","children","accent","setAccentState","setAccent","name","value","Provider","useTheme","theme","rt","ctx","setScheme","scheme","themeName","noopSetAccent","_name","__DEV__","console","warn"],"sourceRoot":"../../../src","sources":["context/ThemeProvider.tsx"],"mappings":";;AAAA,SACEA,aAAa,EAEbC,WAAW,EACXC,UAAU,EACVC,OAAO,EACPC,QAAQ,QACH,OAAO;AACd,SAASC,gBAAgB,QAAQ,gCAAgC;AACjE,SAASC,YAAY,QAAQ,wBAAwB;AACrD,SAASC,gBAAgB;AACzB,SAASC,WAAW,EAAEC,WAAW,EAAEC,gBAAgB;AAA2B,SAAAC,GAAA,IAAAC,IAAA;AAG9E;AACA;AACA;AACAL,gBAAgB,CAAC,CAAC;AAOlB,MAAMM,YAAY,gBAAGb,aAAa,CAA2B,IAAI,CAAC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMc,eAAe,GAAGA,CAAC;EAAEC;AAA4B,CAAC,KAAK;EAClE,MAAM,CAACC,MAAM,EAAEC,cAAc,CAAC,GAAGb,QAAQ,CAAqB,MAC5DM,gBAAgB,CAAC,CACnB,CAAC;EAED,MAAMQ,SAAS,GAAGjB,WAAW,CAAEkB,IAAY,IAAK;IAC9CX,WAAW,CAACW,IAAI,CAAC;IACjBF,cAAc,CAACE,IAAI,CAAC;EACtB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,KAAK,GAAGjB,OAAO,CACnB,OAAO;IAAEa,MAAM;IAAEE;EAAU,CAAC,CAAC,EAC7B,CAACF,MAAM,EAAEE,SAAS,CACpB,CAAC;EAED,oBACEN,IAAA,CAACC,YAAY,CAACQ,QAAQ;IAACD,KAAK,EAAEA,KAAM;IAAAL,QAAA,eAClCH,IAAA,CAACP,gBAAgB;MAAAU,QAAA,EAAEA;IAAQ,CAAmB;EAAC,CAC1B,CAAC;AAE5B,CAAC;AAeD;AACA;AACA;AACA;AACA,OAAO,SAASO,QAAQA,CAAA,EAAmB;EACzC,MAAM;IAAEC,KAAK;IAAEC;EAAG,CAAC,GAAGlB,YAAY,CAAC,CAAC;EACpC,MAAMmB,GAAG,GAAGvB,UAAU,CAACW,YAAY,CAAC;EAEpC,MAAMa,SAAS,GAAGzB,WAAW,CAAE0B,MAAc,IAAK;IAChDlB,WAAW,CAACkB,MAAM,CAAC;EACrB,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IACLJ,KAAK;IACLI,MAAM,EAAGH,EAAE,CAACI,SAAS,IAAI,OAAkB;IAC3CF,SAAS;IACTV,MAAM,EAAES,GAAG,EAAET,MAAM;IACnBE,SAAS,EAAEO,GAAG,EAAEP,SAAS,IAAIW;EAC/B,CAAC;AACH;AAEA,MAAMA,aAAa,GAAIC,KAAa,IAAW;EAC7C,IAAIC,OAAO,EAAE;IACXC,OAAO,CAACC,IAAI,CACV,qEACF,CAAC;EACH;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { Image } from "react-native-unistyles/components/native/Image";
|
|
3
4
|
import { createElement } from 'react';
|
|
4
|
-
import {
|
|
5
|
+
import { Platform } from 'react-native';
|
|
5
6
|
const CONTENT_FIT_MAP = {
|
|
6
7
|
cover: 'cover',
|
|
7
8
|
contain: 'contain',
|
|
@@ -22,8 +23,13 @@ export const defaultImage = ({
|
|
|
22
23
|
accessibilityLabel,
|
|
23
24
|
// RN splits "show this until loaded" across two platform-specific props:
|
|
24
25
|
// `defaultSource` (iOS only) and `loadingIndicatorSource` (Android only).
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
// Only one may be set — Android's Image throws outright when it is handed
|
|
27
|
+
// both — so the placeholder goes to whichever this platform reads.
|
|
28
|
+
...(Platform.OS === 'android' ? {
|
|
29
|
+
loadingIndicatorSource: placeholder
|
|
30
|
+
} : {
|
|
31
|
+
defaultSource: placeholder
|
|
32
|
+
}),
|
|
27
33
|
resizeMode: CONTENT_FIT_MAP[contentFit],
|
|
28
34
|
onError: onError ? () => onError() : undefined
|
|
29
35
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createElement","
|
|
1
|
+
{"version":3,"names":["createElement","Platform","CONTENT_FIT_MAP","cover","contain","fill","defaultImage","contentFit","source","style","accessibilityLabel","placeholder","onError","Image","OS","loadingIndicatorSource","defaultSource","resizeMode","undefined"],"sourceRoot":"../../../../src","sources":["theme/defaults/image.tsx"],"mappings":";;;AAAA,SAASA,aAAa,QAAQ,OAAO;AACrC,SAAgBC,QAAQ,QAAQ,cAAc;AAI9C,MAAMC,eAAe,GAAG;EACtBC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE;AACR,CAGC;;AAED;AACA,OAAO,MAAMC,YAAiC,GAAGA,CAAC;EAChDC,UAAU,GAAG,OAAO;EACpBC,MAAM;EACNC,KAAK;EACLC,kBAAkB;EAClBC,WAAW;EACXC;AACF,CAAC,kBACCZ,aAAa,CAACa,KAAK,EAAE;EACnBL,MAAM;EACNC,KAAK;EACLC,kBAAkB;EAClB;EACA;EACA;EACA;EACA,IAAIT,QAAQ,CAACa,EAAE,KAAK,SAAS,GACzB;IAAEC,sBAAsB,EAAEJ;EAAY,CAAC,GACvC;IAAEK,aAAa,EAAEL;EAAY,CAAC,CAAC;EACnCM,UAAU,EAAEf,eAAe,CAACK,UAAU,CAAC;EACvCK,OAAO,EAAEA,OAAO,GAAG,MAAMA,OAAO,CAAC,CAAC,GAAGM;AACvC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { StyleSheet } from 'react-native-unistyles';
|
|
3
|
+
import { StyleSheet, UnistylesRuntime } from 'react-native-unistyles';
|
|
4
4
|
import { normalizeAccent } from "../utils/accent-utils.js";
|
|
5
5
|
import { deepMerge } from "../utils/deep-merge.js";
|
|
6
6
|
import { defaultIcons } from "./defaults/icons.js";
|
|
@@ -97,6 +97,19 @@ const mergeThemeOverride = (theme, override) => {
|
|
|
97
97
|
return next;
|
|
98
98
|
};
|
|
99
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Whether the live configuration is the provider's fallback rather than an
|
|
102
|
+
* app's own call. A fallback is a placeholder, so a real call still replaces
|
|
103
|
+
* it; two real calls remain an error.
|
|
104
|
+
*/
|
|
105
|
+
let configuredByFallback = false;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Whether `StyleSheet.configure` has run. Tracked separately from
|
|
109
|
+
* {@link Registry.configured} because it may only happen once per app.
|
|
110
|
+
*/
|
|
111
|
+
let unistylesConfigured = false;
|
|
112
|
+
|
|
100
113
|
/**
|
|
101
114
|
* Configure Terra UI's themes. Call ONCE, as early as possible — before any
|
|
102
115
|
* component renders (e.g. top of the app entry, imported from
|
|
@@ -104,12 +117,36 @@ const mergeThemeOverride = (theme, override) => {
|
|
|
104
117
|
* theme; `<TerraUIProvider>` calls it for you if you haven't.
|
|
105
118
|
*/
|
|
106
119
|
export function configureTerraUI(config = {}) {
|
|
107
|
-
if (registry.configured) {
|
|
120
|
+
if (registry.configured && !configuredByFallback) {
|
|
108
121
|
if (__DEV__ && Object.keys(config).length > 0) {
|
|
109
122
|
console.warn('[react-native-terra-ui] configureTerraUI() was called more than once; the later call was ignored.');
|
|
110
123
|
}
|
|
111
124
|
return;
|
|
112
125
|
}
|
|
126
|
+
configuredByFallback = false;
|
|
127
|
+
applyConfig(config);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Registers the default theme so components render without any setup.
|
|
132
|
+
*
|
|
133
|
+
* Separate from {@link configureTerraUI} because it must not consume the app's
|
|
134
|
+
* one chance to configure: this runs when `<TerraUIProvider>`'s module is first
|
|
135
|
+
* imported, and any import of the package root pulls that module in — so
|
|
136
|
+
* whether it lands before or after an app's own call comes down to the order
|
|
137
|
+
* the bundler happened to evaluate modules in. Marking it as a fallback lets
|
|
138
|
+
* the real call win either way.
|
|
139
|
+
*
|
|
140
|
+
* @internal
|
|
141
|
+
*/
|
|
142
|
+
export function bootstrapTerraUI() {
|
|
143
|
+
if (registry.configured) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
applyConfig({});
|
|
147
|
+
configuredByFallback = true;
|
|
148
|
+
}
|
|
149
|
+
function applyConfig(config) {
|
|
113
150
|
registry.configured = true;
|
|
114
151
|
registry.baseLight = mergeThemeOverride(mergeThemeOverride(defaultLightTheme, config.shared), config.schemes?.light);
|
|
115
152
|
registry.baseDark = mergeThemeOverride(mergeThemeOverride(defaultDarkTheme, config.shared), config.schemes?.dark);
|
|
@@ -137,9 +174,25 @@ export function configureTerraUI(config = {}) {
|
|
|
137
174
|
} : {
|
|
138
175
|
initialTheme: 'light'
|
|
139
176
|
};
|
|
177
|
+
if (unistylesConfigured) {
|
|
178
|
+
// `StyleSheet.configure` is a one-time startup call — calling it again
|
|
179
|
+
// leaves the themes it already registered in place, which would strand an
|
|
180
|
+
// app's config behind the fallback's defaults. Hand the rebuilt themes to
|
|
181
|
+
// the runtime instead, the same way `applyAccent` swaps a palette.
|
|
182
|
+
UnistylesRuntime.updateTheme('light', () => themes.light);
|
|
183
|
+
UnistylesRuntime.updateTheme('dark', () => themes.dark);
|
|
184
|
+
if ('adaptiveThemes' in settings) {
|
|
185
|
+
UnistylesRuntime.setAdaptiveThemes(true);
|
|
186
|
+
} else {
|
|
187
|
+
UnistylesRuntime.setAdaptiveThemes(false);
|
|
188
|
+
UnistylesRuntime.setTheme(settings.initialTheme);
|
|
189
|
+
}
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
140
192
|
StyleSheet.configure({
|
|
141
193
|
themes,
|
|
142
194
|
settings
|
|
143
195
|
});
|
|
196
|
+
unistylesConfigured = true;
|
|
144
197
|
}
|
|
145
198
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","normalizeAccent","deepMerge","defaultIcons","defaultImage","buildRadiusScale","buildSpacingScale","defaultDarkTheme","defaultLightTheme","DEFAULT_RADIUS","DEFAULT_ELEVATION","resolveDefaultRadius","components","button","radius","surface","registry","baseLight","baseDark","accents","currentAccent","undefined","defaultRadius","surfaceElevation","icons","imageComponent","configured","getRegistry","getIsConfigured","getAccentNames","Object","keys","getImageComponent","getIcon","name","getRequiredIcon","getDefaultRadius","component","getSurfaceElevation","resolveTheme","scheme","accentName","base","accent","mergeThemeOverride","theme","override","spacing","rest","next","radiusTokens","spacingTokens","configureTerraUI","config","__DEV__","length","console","warn","shared","schemes","light","dark","elevation","image","entries","defaultAccent","themes","adaptive","adaptiveThemes","settings","initialScheme","initialTheme","configure"],"sourceRoot":"../../../src","sources":["theme/registry.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,wBAAwB;
|
|
1
|
+
{"version":3,"names":["StyleSheet","UnistylesRuntime","normalizeAccent","deepMerge","defaultIcons","defaultImage","buildRadiusScale","buildSpacingScale","defaultDarkTheme","defaultLightTheme","DEFAULT_RADIUS","DEFAULT_ELEVATION","resolveDefaultRadius","components","button","radius","surface","registry","baseLight","baseDark","accents","currentAccent","undefined","defaultRadius","surfaceElevation","icons","imageComponent","configured","getRegistry","getIsConfigured","getAccentNames","Object","keys","getImageComponent","getIcon","name","getRequiredIcon","getDefaultRadius","component","getSurfaceElevation","resolveTheme","scheme","accentName","base","accent","mergeThemeOverride","theme","override","spacing","rest","next","radiusTokens","spacingTokens","configuredByFallback","unistylesConfigured","configureTerraUI","config","__DEV__","length","console","warn","applyConfig","bootstrapTerraUI","shared","schemes","light","dark","elevation","image","entries","defaultAccent","themes","adaptive","adaptiveThemes","settings","initialScheme","initialTheme","updateTheme","setAdaptiveThemes","setTheme","configure"],"sourceRoot":"../../../src","sources":["theme/registry.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../../src/context/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAKvB,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../../src/context/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAKvB,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAgB,CAAC;AAczD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,cAAc,iBAAiB,gCAoB9D,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,KAAK,EAAE,UAAU,CAAC;IAClB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,kCAAkC;IAClC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,qCAAqC;IACrC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,cAAc,CAezC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../../../src/theme/defaults/image.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAwB,MAAM,aAAU,CAAC;AAW1E,sEAAsE;AACtE,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../../../src/theme/defaults/image.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAwB,MAAM,aAAU,CAAC;AAW1E,sEAAsE;AACtE,eAAO,MAAM,YAAY,EAAE,mBAqBvB,CAAC"}
|
|
@@ -43,5 +43,18 @@ export declare function resolveTheme(scheme: Scheme, accentName?: string): Terra
|
|
|
43
43
|
* theme; `<TerraUIProvider>` calls it for you if you haven't.
|
|
44
44
|
*/
|
|
45
45
|
export declare function configureTerraUI(config?: TerraConfig): void;
|
|
46
|
+
/**
|
|
47
|
+
* Registers the default theme so components render without any setup.
|
|
48
|
+
*
|
|
49
|
+
* Separate from {@link configureTerraUI} because it must not consume the app's
|
|
50
|
+
* one chance to configure: this runs when `<TerraUIProvider>`'s module is first
|
|
51
|
+
* imported, and any import of the package root pulls that module in — so
|
|
52
|
+
* whether it lands before or after an app's own call comes down to the order
|
|
53
|
+
* the bundler happened to evaluate modules in. Marking it as a fallback lets
|
|
54
|
+
* the real call win either way.
|
|
55
|
+
*
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
export declare function bootstrapTerraUI(): void;
|
|
46
59
|
export {};
|
|
47
60
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/theme/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,UAAU,EAEX,MAAM,YAAS,CAAC;AASjB,KAAK,cAAc,GAAG,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;AAWlE,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAiB,eAAe;QAC9B,KAAK,EAAE,UAAU,CAAC;QAClB,IAAI,EAAE,UAAU,CAAC;KAClB;CACF;AAED,UAAU,QAAQ;IAChB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,cAAc,CAAC;IAC9B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC1C,cAAc,EAAE,mBAAmB,CAAC;IACpC,UAAU,EAAE,OAAO,CAAC;CACrB;AAcD,gBAAgB;AAChB,eAAO,MAAM,WAAW,QAAO,QAAoB,CAAC;AAEpD,eAAO,MAAM,eAAe,QAAO,OAA8B,CAAC;AAElE,eAAO,MAAM,cAAc,QAAO,MAAM,EAAmC,CAAC;AAE5E,eAAO,MAAM,iBAAiB,QAAO,mBACZ,CAAC;AAE1B,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,kBAAkB,GAAG,SACS,CAAC;AAEtE,eAAO,MAAM,eAAe,GAC1B,MAAM,qBAAqB,KAC1B,kBAAgE,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,eAAe,KACzB,kBAAuD,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAO,YACZ,CAAC;AAE5B,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAI5E;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/theme/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,UAAU,EAEX,MAAM,YAAS,CAAC;AASjB,KAAK,cAAc,GAAG,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;AAWlE,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAiB,eAAe;QAC9B,KAAK,EAAE,UAAU,CAAC;QAClB,IAAI,EAAE,UAAU,CAAC;KAClB;CACF;AAED,UAAU,QAAQ;IAChB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,cAAc,CAAC;IAC9B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC1C,cAAc,EAAE,mBAAmB,CAAC;IACpC,UAAU,EAAE,OAAO,CAAC;CACrB;AAcD,gBAAgB;AAChB,eAAO,MAAM,WAAW,QAAO,QAAoB,CAAC;AAEpD,eAAO,MAAM,eAAe,QAAO,OAA8B,CAAC;AAElE,eAAO,MAAM,cAAc,QAAO,MAAM,EAAmC,CAAC;AAE5E,eAAO,MAAM,iBAAiB,QAAO,mBACZ,CAAC;AAE1B,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,kBAAkB,GAAG,SACS,CAAC;AAEtE,eAAO,MAAM,eAAe,GAC1B,MAAM,qBAAqB,KAC1B,kBAAgE,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,eAAe,KACzB,kBAAuD,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAO,YACZ,CAAC;AAE5B,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAI5E;AA2CD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,WAAgB,GAAG,IAAI,CAY/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-terra-ui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Themeable React Native UI components built on react-native-unistyles",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
|
7
7
|
"imports": {
|
|
8
|
-
"#*": "./src
|
|
8
|
+
"#*": "./src/*.ts"
|
|
9
9
|
},
|
|
10
10
|
"exports": {
|
|
11
11
|
".": {
|
|
12
|
-
"source": "./src/index.tsx",
|
|
13
12
|
"types": "./lib/typescript/src/index.d.ts",
|
|
14
13
|
"default": "./lib/module/index.js"
|
|
15
14
|
},
|
|
16
15
|
"./theme": {
|
|
17
|
-
"source": "./src/theme/index.ts",
|
|
18
16
|
"types": "./lib/typescript/src/theme/index.d.ts",
|
|
19
17
|
"default": "./lib/module/theme/index.js"
|
|
20
18
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { View } from 'react-native';
|
|
2
2
|
import { StyleSheet } from 'react-native-unistyles';
|
|
3
3
|
import { getImageComponent } from '#theme/registry';
|
|
4
|
-
import type { RadiusKey } from '#theme/types
|
|
4
|
+
import type { RadiusKey } from '#theme/types';
|
|
5
5
|
import type { ImageProps } from './types';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -8,15 +8,14 @@ import {
|
|
|
8
8
|
} from 'react';
|
|
9
9
|
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
|
10
10
|
import { useUnistyles } from 'react-native-unistyles';
|
|
11
|
-
import {
|
|
11
|
+
import { bootstrapTerraUI } from '../theme/registry';
|
|
12
12
|
import { applyAccent, applyScheme, getCurrentAccent } from '../theme/runtime';
|
|
13
13
|
import type { Scheme, TerraTheme } from '../theme/types';
|
|
14
14
|
|
|
15
|
-
// Ensure the default theme is registered on first import
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
15
|
+
// Ensure the default theme is registered on first import. An app that calls
|
|
16
|
+
// `configureTerraUI` itself still wins, whichever module the bundler evaluates
|
|
17
|
+
// first — see the note on `bootstrapTerraUI`.
|
|
18
|
+
bootstrapTerraUI();
|
|
20
19
|
|
|
21
20
|
interface ThemeContextValue {
|
|
22
21
|
accent: string | undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createElement } from 'react';
|
|
2
|
-
import { Image } from 'react-native';
|
|
2
|
+
import { Image, Platform } from 'react-native';
|
|
3
3
|
|
|
4
4
|
import type { TerraImageComponent, TerraImageContentFit } from '../types';
|
|
5
5
|
|
|
@@ -27,8 +27,11 @@ export const defaultImage: TerraImageComponent = ({
|
|
|
27
27
|
accessibilityLabel,
|
|
28
28
|
// RN splits "show this until loaded" across two platform-specific props:
|
|
29
29
|
// `defaultSource` (iOS only) and `loadingIndicatorSource` (Android only).
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
// Only one may be set — Android's Image throws outright when it is handed
|
|
31
|
+
// both — so the placeholder goes to whichever this platform reads.
|
|
32
|
+
...(Platform.OS === 'android'
|
|
33
|
+
? { loadingIndicatorSource: placeholder }
|
|
34
|
+
: { defaultSource: placeholder }),
|
|
32
35
|
resizeMode: CONTENT_FIT_MAP[contentFit],
|
|
33
36
|
onError: onError ? () => onError() : undefined,
|
|
34
37
|
});
|
package/src/theme/registry.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StyleSheet } from 'react-native-unistyles';
|
|
1
|
+
import { StyleSheet, UnistylesRuntime } from 'react-native-unistyles';
|
|
2
2
|
|
|
3
3
|
import { normalizeAccent } from '#utils/accent-utils';
|
|
4
4
|
import { deepMerge } from '#utils/deep-merge';
|
|
@@ -142,6 +142,19 @@ const mergeThemeOverride = (
|
|
|
142
142
|
return next;
|
|
143
143
|
};
|
|
144
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Whether the live configuration is the provider's fallback rather than an
|
|
147
|
+
* app's own call. A fallback is a placeholder, so a real call still replaces
|
|
148
|
+
* it; two real calls remain an error.
|
|
149
|
+
*/
|
|
150
|
+
let configuredByFallback = false;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Whether `StyleSheet.configure` has run. Tracked separately from
|
|
154
|
+
* {@link Registry.configured} because it may only happen once per app.
|
|
155
|
+
*/
|
|
156
|
+
let unistylesConfigured = false;
|
|
157
|
+
|
|
145
158
|
/**
|
|
146
159
|
* Configure Terra UI's themes. Call ONCE, as early as possible — before any
|
|
147
160
|
* component renders (e.g. top of the app entry, imported from
|
|
@@ -149,7 +162,7 @@ const mergeThemeOverride = (
|
|
|
149
162
|
* theme; `<TerraUIProvider>` calls it for you if you haven't.
|
|
150
163
|
*/
|
|
151
164
|
export function configureTerraUI(config: TerraConfig = {}): void {
|
|
152
|
-
if (registry.configured) {
|
|
165
|
+
if (registry.configured && !configuredByFallback) {
|
|
153
166
|
if (__DEV__ && Object.keys(config).length > 0) {
|
|
154
167
|
console.warn(
|
|
155
168
|
'[react-native-terra-ui] configureTerraUI() was called more than once; the later call was ignored.'
|
|
@@ -157,6 +170,33 @@ export function configureTerraUI(config: TerraConfig = {}): void {
|
|
|
157
170
|
}
|
|
158
171
|
return;
|
|
159
172
|
}
|
|
173
|
+
|
|
174
|
+
configuredByFallback = false;
|
|
175
|
+
applyConfig(config);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Registers the default theme so components render without any setup.
|
|
180
|
+
*
|
|
181
|
+
* Separate from {@link configureTerraUI} because it must not consume the app's
|
|
182
|
+
* one chance to configure: this runs when `<TerraUIProvider>`'s module is first
|
|
183
|
+
* imported, and any import of the package root pulls that module in — so
|
|
184
|
+
* whether it lands before or after an app's own call comes down to the order
|
|
185
|
+
* the bundler happened to evaluate modules in. Marking it as a fallback lets
|
|
186
|
+
* the real call win either way.
|
|
187
|
+
*
|
|
188
|
+
* @internal
|
|
189
|
+
*/
|
|
190
|
+
export function bootstrapTerraUI(): void {
|
|
191
|
+
if (registry.configured) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
applyConfig({});
|
|
196
|
+
configuredByFallback = true;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function applyConfig(config: TerraConfig): void {
|
|
160
200
|
registry.configured = true;
|
|
161
201
|
|
|
162
202
|
registry.baseLight = mergeThemeOverride(
|
|
@@ -196,5 +236,24 @@ export function configureTerraUI(config: TerraConfig = {}): void {
|
|
|
196
236
|
? { adaptiveThemes: true as const }
|
|
197
237
|
: { initialTheme: 'light' as const };
|
|
198
238
|
|
|
239
|
+
if (unistylesConfigured) {
|
|
240
|
+
// `StyleSheet.configure` is a one-time startup call — calling it again
|
|
241
|
+
// leaves the themes it already registered in place, which would strand an
|
|
242
|
+
// app's config behind the fallback's defaults. Hand the rebuilt themes to
|
|
243
|
+
// the runtime instead, the same way `applyAccent` swaps a palette.
|
|
244
|
+
UnistylesRuntime.updateTheme('light', () => themes.light);
|
|
245
|
+
UnistylesRuntime.updateTheme('dark', () => themes.dark);
|
|
246
|
+
|
|
247
|
+
if ('adaptiveThemes' in settings) {
|
|
248
|
+
UnistylesRuntime.setAdaptiveThemes(true);
|
|
249
|
+
} else {
|
|
250
|
+
UnistylesRuntime.setAdaptiveThemes(false);
|
|
251
|
+
UnistylesRuntime.setTheme(settings.initialTheme);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
|
|
199
257
|
StyleSheet.configure({ themes, settings });
|
|
258
|
+
unistylesConfigured = true;
|
|
200
259
|
}
|