@draftbit/theme 50.5.2 → 50.5.3-22879.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/lib/commonjs/DefaultTheme.js +1 -1
- package/lib/commonjs/Provider.js +1 -1
- package/lib/commonjs/createThemeValuesProxy.js +1 -1
- package/lib/commonjs/types.js +1 -0
- package/lib/commonjs/validators.js +1 -1
- package/lib/typescript/src/DefaultTheme.js +38 -38
- package/lib/typescript/src/DefaultTheme.js.map +1 -1
- package/lib/typescript/src/Provider.js +38 -10
- package/lib/typescript/src/Provider.js.map +1 -1
- package/lib/typescript/src/createThemeValuesProxy.js +23 -19
- package/lib/typescript/src/createThemeValuesProxy.js.map +1 -1
- package/lib/typescript/src/types.d.ts +30 -2
- package/lib/typescript/src/validators.d.ts +2 -1
- package/lib/typescript/src/validators.js +62 -42
- package/lib/typescript/src/validators.js.map +1 -1
- package/lib/typescript/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/DefaultTheme.js +38 -38
- package/src/DefaultTheme.js.map +1 -1
- package/src/DefaultTheme.ts +38 -38
- package/src/Provider.js +38 -10
- package/src/Provider.js.map +1 -1
- package/src/Provider.tsx +60 -36
- package/src/createThemeValuesProxy.js +23 -19
- package/src/createThemeValuesProxy.js.map +1 -1
- package/src/createThemeValuesProxy.ts +32 -23
- package/src/types.ts +33 -2
- package/src/validators.js +62 -42
- package/src/validators.js.map +1 -1
- package/src/validators.ts +82 -46
|
@@ -1 +1 @@
|
|
|
1
|
-
import{systemWeights}from"react-native-typography";import createTheme from"./createTheme";var palettes={draftbit:{primary:"rgb(90, 69, 255)",secondary:"rgb(59, 201, 234)",tertiary:"rgb(90,69,255)",background:"rgba(251, 252, 253, 1)",error:"rgba(255, 69, 100, 1)",divider:"rgba(200, 200, 200, 1)",strong:"rgba(18, 20, 44, 1)",medium:"rgba(70, 78, 88, 1)",light:"rgba(165, 173, 183, 1)",text:"#000",success:"#22bb33",warning:"#f0ad4e",info:"#aaaaaa"}};var DraftbitTheme=createTheme({breakpoints:{},palettes:palettes,theme:{name:"Draftbit",colors:{branding:{primary:palettes.draftbit.primary,secondary:palettes.draftbit.secondary,tertiary:palettes.draftbit.tertiary,accent:palettes.draftbit.secondary},text:{strong:palettes.draftbit.strong,medium:palettes.draftbit.medium,normal:palettes.draftbit.text,light:palettes.draftbit.light,success:palettes.draftbit.success,warning:palettes.draftbit.warning,danger:palettes.draftbit.error},background:{brand:palettes.draftbit.background,info:palettes.draftbit.info,success:palettes.draftbit.success,warning:palettes.draftbit.warning,danger:palettes.draftbit.error},foreground:{brand:palettes.draftbit.light,info:palettes.draftbit.strong,success:palettes.draftbit.light,warning:palettes.draftbit.light,danger:palettes.draftbit.light},border:{brand:palettes.draftbit.divider,info:palettes.draftbit.divider,success:palettes.draftbit.divider,warning:palettes.draftbit.divider,danger:palettes.draftbit.divider}},typography:{
|
|
1
|
+
import{systemWeights}from"react-native-typography";import createTheme from"./createTheme";var palettes={draftbit:{primary:"rgb(90, 69, 255)",secondary:"rgb(59, 201, 234)",tertiary:"rgb(90,69,255)",background:"rgba(251, 252, 253, 1)",error:"rgba(255, 69, 100, 1)",divider:"rgba(200, 200, 200, 1)",strong:"rgba(18, 20, 44, 1)",medium:"rgba(70, 78, 88, 1)",light:"rgba(165, 173, 183, 1)",text:"#000",success:"#22bb33",warning:"#f0ad4e",info:"#aaaaaa"}};var DraftbitTheme=createTheme({breakpoints:{},palettes:palettes,theme:{name:"Draftbit",colors:{branding:{primary:palettes.draftbit.primary,secondary:palettes.draftbit.secondary,tertiary:palettes.draftbit.tertiary,accent:palettes.draftbit.secondary},text:{strong:palettes.draftbit.strong,medium:palettes.draftbit.medium,normal:palettes.draftbit.text,light:palettes.draftbit.light,success:palettes.draftbit.success,warning:palettes.draftbit.warning,danger:palettes.draftbit.error},background:{brand:palettes.draftbit.background,info:palettes.draftbit.info,success:palettes.draftbit.success,warning:palettes.draftbit.warning,danger:palettes.draftbit.error},foreground:{brand:palettes.draftbit.light,info:palettes.draftbit.strong,success:palettes.draftbit.light,warning:palettes.draftbit.light,danger:palettes.draftbit.light},border:{brand:palettes.draftbit.divider,info:palettes.draftbit.divider,success:palettes.draftbit.divider,warning:palettes.draftbit.divider,danger:palettes.draftbit.divider}},typography:{body1:Object.assign({},systemWeights.regular,{fontSize:16,letterSpacing:0,lineHeight:26}),body2:Object.assign({},systemWeights.regular,{fontSize:14,letterSpacing:0,lineHeight:22}),button:Object.assign({},systemWeights.bold,{fontSize:14,letterSpacing:0,lineHeight:16}),caption:Object.assign({},systemWeights.regular,{fontSize:12,letterSpacing:0,lineHeight:16}),headline1:Object.assign({},systemWeights.bold,{fontSize:60,letterSpacing:0,lineHeight:71}),headline2:Object.assign({},systemWeights.bold,{fontSize:48,letterSpacing:0,lineHeight:58}),headline3:Object.assign({},systemWeights.bold,{fontSize:34,letterSpacing:0,lineHeight:40}),headline4:Object.assign({},systemWeights.bold,{fontSize:24,letterSpacing:0,lineHeight:34}),headline5:Object.assign({},systemWeights.bold,{fontSize:20,letterSpacing:0,lineHeight:26}),headline6:Object.assign({},systemWeights.bold,{fontSize:16,letterSpacing:0,lineHeight:24}),overline:Object.assign({},systemWeights.regular,{fontSize:12,letterSpacing:2,lineHeight:16}),subtitle1:Object.assign({},systemWeights.regular,{fontSize:16,letterSpacing:0,lineHeight:26}),subtitle2:Object.assign({},systemWeights.regular,{fontSize:14,letterSpacing:0,lineHeight:22})}}});export default DraftbitTheme;
|
package/lib/commonjs/Provider.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _this=this,_jsxFileName="/home/runner/work/react-native-jigsaw/react-native-jigsaw/packages/theme/src/Provider.tsx";import React from"react";import{Dimensions,Platform,useColorScheme}from"react-native";import AsyncStorage from"@react-native-async-storage/async-storage";import createThemeValuesProxy from"./createThemeValuesProxy";import DefaultTheme from"./DefaultTheme";import{jsx as _jsx}from"react/jsx-runtime";var SAVED_SELECTED_THEME_KEY="saved_selected_theme";var ThemeContext=React.createContext({theme:DefaultTheme,changeTheme:function changeTheme(){}});var Provider=function Provider(_ref){var _themes$find;var themes=_ref.themes,breakpoints=_ref.breakpoints,initialThemeName=_ref.initialThemeName,children=_ref.children;var initialTheme=(_themes$find=themes.find(function(theme){return theme.name===initialThemeName;}))!=null?_themes$find:DefaultTheme;var _React$useState=React.useState(initialTheme),_React$useState2=_slicedToArray(_React$useState,2),currentTheme=_React$useState2[0],setCurrentTheme=_React$useState2[1];var _React$useState3=React.useState(Dimensions.get("window").width),_React$useState4=_slicedToArray(_React$useState3,2),deviceWidth=_React$useState4[0],setDeviceWidth=_React$useState4[1];var colorScheme=useColorScheme();var lightDarkSelection=colorScheme!=null?colorScheme:"light";var changeTheme=React.useCallback(function(themeName,options){var theme=themes.find(function(t){return t.name===themeName;});if(!theme){console.warn("Theme with name",themeName,"not found. Make sure it's passed into the top level ThemeProvider");return;}setCurrentTheme(theme);if((options==null?void 0:options.persistent)===true){AsyncStorage.setItem(SAVED_SELECTED_THEME_KEY,themeName).catch(function(e){console.warn("Failed to persist selected theme",e);});}},[themes,setCurrentTheme]);var proxiedTheme=React.useMemo(function(){return Object.assign({},currentTheme,{colors:{branding:
|
|
1
|
+
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";var _this=this,_jsxFileName="/home/runner/work/react-native-jigsaw/react-native-jigsaw/packages/theme/src/Provider.tsx";import React from"react";import{Dimensions,Platform,useColorScheme}from"react-native";import AsyncStorage from"@react-native-async-storage/async-storage";import createThemeValuesProxy from"./createThemeValuesProxy";import DefaultTheme from"./DefaultTheme";import{asThemeValuesObject}from"./validators";import{jsx as _jsx}from"react/jsx-runtime";var SAVED_SELECTED_THEME_KEY="saved_selected_theme";var ThemeContext=React.createContext({theme:DefaultTheme,changeTheme:function changeTheme(){}});var Provider=function Provider(_ref){var _themes$find;var themes=_ref.themes,breakpoints=_ref.breakpoints,initialThemeName=_ref.initialThemeName,children=_ref.children;var initialTheme=(_themes$find=themes.find(function(theme){return theme.name===initialThemeName;}))!=null?_themes$find:DefaultTheme;var _React$useState=React.useState(initialTheme),_React$useState2=_slicedToArray(_React$useState,2),currentTheme=_React$useState2[0],setCurrentTheme=_React$useState2[1];var _React$useState3=React.useState(Dimensions.get("window").width),_React$useState4=_slicedToArray(_React$useState3,2),deviceWidth=_React$useState4[0],setDeviceWidth=_React$useState4[1];var colorScheme=useColorScheme();var lightDarkSelection=colorScheme!=null?colorScheme:"light";var changeTheme=React.useCallback(function(themeName,options){var theme=themes.find(function(t){return t.name===themeName;});if(!theme){console.warn("Theme with name",themeName,"not found. Make sure it's passed into the top level ThemeProvider");return;}setCurrentTheme(theme);if((options==null?void 0:options.persistent)===true){AsyncStorage.setItem(SAVED_SELECTED_THEME_KEY,themeName).catch(function(e){console.warn("Failed to persist selected theme",e);});}},[themes,setCurrentTheme]);var proxiedTheme=React.useMemo(function(){var createProxiedThemeValue=function createProxiedThemeValue(value){return createThemeValuesProxy(value,breakpoints,deviceWidth,Platform.OS,lightDarkSelection);};var createProxiedTypographyValue=function createProxiedTypographyValue(value){var valueAsThemeValues=asThemeValuesObject(value);if(valueAsThemeValues){return createProxiedThemeValue(valueAsThemeValues);}else{return value;}};return Object.assign({},currentTheme,{colors:{branding:createProxiedThemeValue(currentTheme.colors.branding),text:createProxiedThemeValue(currentTheme.colors.text),background:createProxiedThemeValue(currentTheme.colors.background),foreground:createProxiedThemeValue(currentTheme.colors.foreground),border:createProxiedThemeValue(currentTheme.colors.border)},typography:{body1:createProxiedTypographyValue(currentTheme.typography.body1),body2:createProxiedTypographyValue(currentTheme.typography.body2),button:createProxiedTypographyValue(currentTheme.typography.button),caption:createProxiedTypographyValue(currentTheme.typography.caption),headline1:createProxiedTypographyValue(currentTheme.typography.headline1),headline2:createProxiedTypographyValue(currentTheme.typography.headline2),headline3:createProxiedTypographyValue(currentTheme.typography.headline3),headline4:createProxiedTypographyValue(currentTheme.typography.headline4),headline5:createProxiedTypographyValue(currentTheme.typography.headline5),headline6:createProxiedTypographyValue(currentTheme.typography.headline6),overline:createProxiedTypographyValue(currentTheme.typography.overline),subtitle1:createProxiedTypographyValue(currentTheme.typography.subtitle1),subtitle2:createProxiedTypographyValue(currentTheme.typography.subtitle2)}});},[currentTheme,deviceWidth,breakpoints,lightDarkSelection]);React.useEffect(function(){var listener=Dimensions.addEventListener("change",function(_ref2){var window=_ref2.window;return setDeviceWidth(window.width);});return function(){listener.remove();};});React.useEffect(function(){var run=function(){var _ref3=_asyncToGenerator(function*(){var savedSelectedThemeName=yield AsyncStorage.getItem(SAVED_SELECTED_THEME_KEY);if(savedSelectedThemeName){changeTheme(savedSelectedThemeName);}});return function run(){return _ref3.apply(this,arguments);};}();run();},[]);return _jsx(ThemeContext.Provider,{value:{theme:proxiedTheme,changeTheme:changeTheme},children:children});};var useTheme=function useTheme(){var _React$useContext=React.useContext(ThemeContext),theme=_React$useContext.theme;return theme;};var useChangeTheme=function useChangeTheme(){var _React$useContext2=React.useContext(ThemeContext),changeTheme=_React$useContext2.changeTheme;return changeTheme;};var withTheme=function withTheme(Component){return React.forwardRef(function(props,ref){var _React$useContext3=React.useContext(ThemeContext),theme=_React$useContext3.theme;return _jsx(Component,Object.assign({},props,{theme:theme,ref:ref}));});};export{Provider,useTheme,useChangeTheme,withTheme};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{asThemeValuesObject}from"./validators";export default function createThemeValuesProxy(value,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection){if(value===undefined||value===null){return undefined;}return new Proxy(value,{get:function get(target,key){var currentValue=target[key];var valueAsThemeValues=asThemeValuesObject(currentValue);if(valueAsThemeValues){var platformKeys=["ios","android","web","macos","windows"];var breakpointKeys=Object.keys(breakpoints);var lightDarkKeys=["light","dark"];var keysType=getKeysType(valueAsThemeValues,platformKeys,breakpointKeys,lightDarkKeys);if(keysType==="default"){return createThemeValuesProxy(valueAsThemeValues,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection);}else if(keysType==="platform"){return getPlatformValue(valueAsThemeValues,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection);}else if(keysType==="breakpoint"){return getBreakpointValue(valueAsThemeValues,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection);}else if(keysType==="lightDark"){return getLightDarkValue(valueAsThemeValues,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection);}else{return undefined;}}else{return currentValue;}},set:function set(){throw new Error("Theme is read only, cannot be modified at runtime");}});}function getKeysType(value,platformKeys,breakpointKeys,lightDarkKeys){var hasPlatformKeys=platformKeys.some(function(key){return value[key]!==undefined;});var hasBreakpointKeys=breakpointKeys.some(function(key){return value[key]!==undefined;});var hasLightDarkKeys=lightDarkKeys.some(function(key){return value[key]!==undefined;});var hasUserDefinedKeys=Object.keys(value).some(function(key){return!platformKeys.includes(key)&&!breakpointKeys.includes(key)&&!lightDarkKeys.includes(key)&&key!=="default";});if(!onlyOneTrue(hasPlatformKeys,hasBreakpointKeys,hasUserDefinedKeys,hasLightDarkKeys)&&!allFalse(hasPlatformKeys,hasBreakpointKeys,hasUserDefinedKeys,hasLightDarkKeys)){throw new Error("Cannot mix usage of platform keys, breakpoint keys, light/dark keys, and custom defined keys on the same level"+`\nKeys: ${Object.keys(value).join(", ")}`);}else if(hasPlatformKeys){return"platform";}else if(hasBreakpointKeys){return"breakpoint";}else if(hasLightDarkKeys){return"lightDark";}else{return"default";}}function onlyOneTrue(a,b,c,d){return[a,b,c,d].filter(function(x){return x;}).length===1;}function allFalse(a,b,c,d){return[a,b,c,d].filter(function(x){return x;}).length===0;}function getPlatformValue(value,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection){var _value$devicePlatform;var currentPlatformValue=(_value$devicePlatform=value[devicePlatform])!=null?_value$devicePlatform:value.default;var valueAsThemeValues=asThemeValuesObject(currentPlatformValue);if(valueAsThemeValues){return createThemeValuesProxy(valueAsThemeValues,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection);}else{return currentPlatformValue;}}function getBreakpointValue(value,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection){var _value$currentBreakpo;var keysToBreakpointValue=Object.keys(value).map(function(key){return[key,breakpoints[key]];});var orderedBreakpoints=keysToBreakpointValue.sort(function(_ref){var _ref2=_slicedToArray(_ref,2),_=_ref2[0],val=_ref2[1];return val;});var currentBreakpointKey="";for(var _ref3 of orderedBreakpoints){var _ref4=_slicedToArray(_ref3,2);var breakpointKey=_ref4[0];var breakpointValue=_ref4[1];if(deviceWidth>=breakpointValue){currentBreakpointKey=breakpointKey;}}var currentBreakpointValue=(_value$currentBreakpo=value[currentBreakpointKey])!=null?_value$currentBreakpo:value.default;var valueAsThemeValues=asThemeValuesObject(currentBreakpointValue);if(valueAsThemeValues){return createThemeValuesProxy(valueAsThemeValues,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection);}else{return currentBreakpointValue;}}function getLightDarkValue(value,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection){var _value$currentLightDa;var currentLightDarkValue=(_value$currentLightDa=value[currentLightDarkSelection])!=null?_value$currentLightDa:value.default;var valueAsThemeValues=asThemeValuesObject(currentLightDarkValue);if(valueAsThemeValues){return createThemeValuesProxy(valueAsThemeValues,breakpoints,deviceWidth,devicePlatform,currentLightDarkSelection);}else{return currentLightDarkValue;}}
|
package/lib/commonjs/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{z}from"zod";var PaletteSchema=z.record(z.string(),z.record(z.string(),z.string()));var BreakpointSchema=z.record(z.string(),z.number());var TextStyleSchema=z.union([z.object({fontSize:z.number()}),z.object({fontFamily:z.string()}),z.object({letterSpacing:z.number()}),z.object({lineHeight:z.number()})]);var ThemeValuesSchema=z.record(z.string(),z.lazy(function(){return z.union([z.string(),z.number(),TextStyleSchema,ThemeValuesSchema]);}));var TextStyleOrThemeValuesSchema=z.union([TextStyleSchema,ThemeValuesSchema]);var ThemeSchema=z.object({name:z.string(),colors:z.object({branding:ThemeValuesSchema.optional(),text:ThemeValuesSchema.optional(),background:ThemeValuesSchema.optional(),foreground:ThemeValuesSchema.optional(),border:ThemeValuesSchema.optional()}),typography:z.object({body1:TextStyleOrThemeValuesSchema.optional(),body2:TextStyleOrThemeValuesSchema.optional(),button:TextStyleOrThemeValuesSchema.optional(),caption:TextStyleOrThemeValuesSchema.optional(),headline1:TextStyleOrThemeValuesSchema.optional(),headline2:TextStyleOrThemeValuesSchema.optional(),headline3:TextStyleOrThemeValuesSchema.optional(),headline4:TextStyleOrThemeValuesSchema.optional(),headline5:TextStyleOrThemeValuesSchema.optional(),headline6:TextStyleOrThemeValuesSchema.optional(),overline:TextStyleOrThemeValuesSchema.optional(),subtitle1:TextStyleOrThemeValuesSchema.optional(),subtitle2:TextStyleOrThemeValuesSchema.optional()})});export function validatePalettes(palettes){var result=PaletteSchema.safeParse(palettes);if(!result.success){throw new Error("Invalid palettes object: "+result.error.message);}}export function validateBreakpoints(breakpoints){var result=BreakpointSchema.safeParse(breakpoints);if(!result.success){throw new Error("Invalid breakpoints object: "+result.error.message);}}export function validateTheme(theme){var result=ThemeSchema.safeParse(theme);if(!result.success){throw new Error("Invalid theme object: "+result.error.message);}}export function asThemeValuesObject(value){var _ThemeValuesSchema$sa;var isTextStyle=TextStyleSchema.safeParse(value).success;if(isTextStyle){return null;}return(_ThemeValuesSchema$sa=ThemeValuesSchema.safeParse(value).data)!=null?_ThemeValuesSchema$sa:null;}
|
|
@@ -61,84 +61,84 @@ const DraftbitTheme = createTheme({
|
|
|
61
61
|
},
|
|
62
62
|
},
|
|
63
63
|
typography: {
|
|
64
|
-
|
|
64
|
+
body1: {
|
|
65
65
|
...systemWeights.regular,
|
|
66
|
+
fontSize: 16,
|
|
67
|
+
letterSpacing: 0,
|
|
68
|
+
lineHeight: 26,
|
|
69
|
+
},
|
|
70
|
+
body2: {
|
|
71
|
+
...systemWeights.regular,
|
|
72
|
+
fontSize: 14,
|
|
73
|
+
letterSpacing: 0,
|
|
74
|
+
lineHeight: 22,
|
|
75
|
+
},
|
|
76
|
+
button: {
|
|
77
|
+
...systemWeights.bold,
|
|
78
|
+
fontSize: 14,
|
|
79
|
+
letterSpacing: 0,
|
|
80
|
+
lineHeight: 16,
|
|
81
|
+
},
|
|
82
|
+
caption: {
|
|
83
|
+
...systemWeights.regular,
|
|
84
|
+
fontSize: 12,
|
|
85
|
+
letterSpacing: 0,
|
|
86
|
+
lineHeight: 16,
|
|
87
|
+
},
|
|
88
|
+
headline1: {
|
|
89
|
+
...systemWeights.bold,
|
|
66
90
|
fontSize: 60,
|
|
67
91
|
letterSpacing: 0,
|
|
68
92
|
lineHeight: 71,
|
|
69
93
|
},
|
|
70
94
|
headline2: {
|
|
71
|
-
...systemWeights.
|
|
95
|
+
...systemWeights.bold,
|
|
72
96
|
fontSize: 48,
|
|
73
97
|
letterSpacing: 0,
|
|
74
98
|
lineHeight: 58,
|
|
75
99
|
},
|
|
76
100
|
headline3: {
|
|
77
|
-
...systemWeights.
|
|
101
|
+
...systemWeights.bold,
|
|
78
102
|
fontSize: 34,
|
|
79
103
|
letterSpacing: 0,
|
|
80
104
|
lineHeight: 40,
|
|
81
105
|
},
|
|
82
106
|
headline4: {
|
|
83
|
-
...systemWeights.
|
|
107
|
+
...systemWeights.bold,
|
|
84
108
|
fontSize: 24,
|
|
85
109
|
letterSpacing: 0,
|
|
86
110
|
lineHeight: 34,
|
|
87
111
|
},
|
|
88
112
|
headline5: {
|
|
89
|
-
...systemWeights.
|
|
113
|
+
...systemWeights.bold,
|
|
90
114
|
fontSize: 20,
|
|
91
115
|
letterSpacing: 0,
|
|
92
116
|
lineHeight: 26,
|
|
93
117
|
},
|
|
94
|
-
|
|
95
|
-
...systemWeights.
|
|
118
|
+
headline6: {
|
|
119
|
+
...systemWeights.bold,
|
|
96
120
|
fontSize: 16,
|
|
97
121
|
letterSpacing: 0,
|
|
98
|
-
lineHeight:
|
|
122
|
+
lineHeight: 24,
|
|
99
123
|
},
|
|
100
|
-
|
|
124
|
+
overline: {
|
|
101
125
|
...systemWeights.regular,
|
|
102
|
-
fontSize:
|
|
103
|
-
letterSpacing:
|
|
104
|
-
lineHeight:
|
|
126
|
+
fontSize: 12,
|
|
127
|
+
letterSpacing: 2,
|
|
128
|
+
lineHeight: 16,
|
|
105
129
|
},
|
|
106
|
-
|
|
130
|
+
subtitle1: {
|
|
107
131
|
...systemWeights.regular,
|
|
108
132
|
fontSize: 16,
|
|
109
133
|
letterSpacing: 0,
|
|
110
134
|
lineHeight: 26,
|
|
111
135
|
},
|
|
112
|
-
|
|
136
|
+
subtitle2: {
|
|
113
137
|
...systemWeights.regular,
|
|
114
138
|
fontSize: 14,
|
|
115
139
|
letterSpacing: 0,
|
|
116
140
|
lineHeight: 22,
|
|
117
141
|
},
|
|
118
|
-
button: {
|
|
119
|
-
...systemWeights.regular,
|
|
120
|
-
fontSize: 14,
|
|
121
|
-
letterSpacing: 0,
|
|
122
|
-
lineHeight: 16,
|
|
123
|
-
},
|
|
124
|
-
caption: {
|
|
125
|
-
...systemWeights.regular,
|
|
126
|
-
fontSize: 12,
|
|
127
|
-
letterSpacing: 0,
|
|
128
|
-
lineHeight: 16,
|
|
129
|
-
},
|
|
130
|
-
overline: {
|
|
131
|
-
...systemWeights.regular,
|
|
132
|
-
fontSize: 12,
|
|
133
|
-
letterSpacing: 2,
|
|
134
|
-
lineHeight: 16,
|
|
135
|
-
},
|
|
136
|
-
headline6: {
|
|
137
|
-
...systemWeights.regular,
|
|
138
|
-
fontSize: 16,
|
|
139
|
-
letterSpacing: 0,
|
|
140
|
-
lineHeight: 24,
|
|
141
|
-
},
|
|
142
142
|
},
|
|
143
143
|
},
|
|
144
144
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultTheme.js","sourceRoot":"","sources":["../../../src/DefaultTheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,WAAW,MAAM,eAAe,CAAC;AAGxC,MAAM,QAAQ,GAAkB;IAC9B,QAAQ,EAAE;QACR,OAAO,EAAE,kBAAkB;QAC3B,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,gBAAgB;QAC1B,UAAU,EAAE,wBAAwB;QACpC,KAAK,EAAE,uBAAuB;QAC9B,OAAO,EAAE,wBAAwB;QACjC,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CAAC;AAEF,MAAM,aAAa,GAAG,WAAW,CAAC;IAChC,WAAW,EAAE,EAAE;IACf,QAAQ;IACR,KAAK,EAAE;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACN,QAAQ,EAAE;gBACR,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;gBAClC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS;gBACtC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ;gBACpC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS;aACpC;YACD,IAAI,EAAE;gBACJ,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;gBAChC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;gBAChC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBAC9B,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;gBAC9B,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;gBAClC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;gBAClC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;aAChC;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU;gBACnC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBAC5B,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;gBAClC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;gBAClC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;aAChC;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;gBAC9B,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;gBAC9B,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;gBAChC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;gBAChC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;aAChC;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;gBAChC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;gBAC/B,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;gBAClC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;gBAClC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;aAClC;SACF;QACD,UAAU,EAAE;YACV,
|
|
1
|
+
{"version":3,"file":"DefaultTheme.js","sourceRoot":"","sources":["../../../src/DefaultTheme.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { Dimensions, Platform, useColorScheme } from "react-native";
|
|
|
3
3
|
import AsyncStorage from "@react-native-async-storage/async-storage";
|
|
4
4
|
import createThemeValuesProxy from "./createThemeValuesProxy";
|
|
5
5
|
import DefaultTheme from "./DefaultTheme";
|
|
6
|
+
import { asThemeValuesObject } from "./validators";
|
|
6
7
|
const SAVED_SELECTED_THEME_KEY = "saved_selected_theme";
|
|
7
8
|
const ThemeContext = React.createContext({
|
|
8
9
|
theme: DefaultTheme,
|
|
@@ -28,16 +29,43 @@ const Provider = ({ themes, breakpoints, initialThemeName, children, }) => {
|
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
31
|
}, [themes, setCurrentTheme]);
|
|
31
|
-
const proxiedTheme = React.useMemo(() =>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
const proxiedTheme = React.useMemo(() => {
|
|
33
|
+
const createProxiedThemeValue = (value) => createThemeValuesProxy(value, breakpoints, deviceWidth, Platform.OS, lightDarkSelection);
|
|
34
|
+
const createProxiedTypographyValue = (value) => {
|
|
35
|
+
const valueAsThemeValues = asThemeValuesObject(value);
|
|
36
|
+
if (valueAsThemeValues) {
|
|
37
|
+
return createProxiedThemeValue(valueAsThemeValues);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
...currentTheme,
|
|
45
|
+
colors: {
|
|
46
|
+
branding: createProxiedThemeValue(currentTheme.colors.branding),
|
|
47
|
+
text: createProxiedThemeValue(currentTheme.colors.text),
|
|
48
|
+
background: createProxiedThemeValue(currentTheme.colors.background),
|
|
49
|
+
foreground: createProxiedThemeValue(currentTheme.colors.foreground),
|
|
50
|
+
border: createProxiedThemeValue(currentTheme.colors.border),
|
|
51
|
+
},
|
|
52
|
+
typography: {
|
|
53
|
+
body1: createProxiedTypographyValue(currentTheme.typography.body1),
|
|
54
|
+
body2: createProxiedTypographyValue(currentTheme.typography.body2),
|
|
55
|
+
button: createProxiedTypographyValue(currentTheme.typography.button),
|
|
56
|
+
caption: createProxiedTypographyValue(currentTheme.typography.caption),
|
|
57
|
+
headline1: createProxiedTypographyValue(currentTheme.typography.headline1),
|
|
58
|
+
headline2: createProxiedTypographyValue(currentTheme.typography.headline2),
|
|
59
|
+
headline3: createProxiedTypographyValue(currentTheme.typography.headline3),
|
|
60
|
+
headline4: createProxiedTypographyValue(currentTheme.typography.headline4),
|
|
61
|
+
headline5: createProxiedTypographyValue(currentTheme.typography.headline5),
|
|
62
|
+
headline6: createProxiedTypographyValue(currentTheme.typography.headline6),
|
|
63
|
+
overline: createProxiedTypographyValue(currentTheme.typography.overline),
|
|
64
|
+
subtitle1: createProxiedTypographyValue(currentTheme.typography.subtitle1),
|
|
65
|
+
subtitle2: createProxiedTypographyValue(currentTheme.typography.subtitle2),
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}, [currentTheme, deviceWidth, breakpoints, lightDarkSelection]);
|
|
41
69
|
React.useEffect(() => {
|
|
42
70
|
const listener = Dimensions.addEventListener("change", ({ window }) => setDeviceWidth(window.width));
|
|
43
71
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../src/Provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../src/Provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { asThemeValuesObject } from "./validators";
|
|
2
2
|
/**
|
|
3
3
|
* Creates a proxy for theme value objects to select a value whenever
|
|
4
4
|
* multiple values are provided for different platforms, breakpoints, and/or light/dark modes
|
|
@@ -13,30 +13,31 @@ export default function createThemeValuesProxy(value, breakpoints, deviceWidth,
|
|
|
13
13
|
return new Proxy(value, {
|
|
14
14
|
get: (target, key) => {
|
|
15
15
|
const currentValue = target[key];
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
16
|
+
const valueAsThemeValues = asThemeValuesObject(currentValue);
|
|
17
|
+
if (valueAsThemeValues) {
|
|
20
18
|
const platformKeys = ["ios", "android", "web", "macos", "windows"];
|
|
21
19
|
const breakpointKeys = Object.keys(breakpoints);
|
|
22
20
|
const lightDarkKeys = ["light", "dark"];
|
|
23
|
-
const keysType = getKeysType(
|
|
21
|
+
const keysType = getKeysType(valueAsThemeValues, platformKeys, breakpointKeys, lightDarkKeys);
|
|
24
22
|
if (keysType === "default") {
|
|
25
|
-
return createThemeValuesProxy(
|
|
23
|
+
return createThemeValuesProxy(valueAsThemeValues, breakpoints, deviceWidth, devicePlatform, currentLightDarkSelection);
|
|
26
24
|
}
|
|
27
25
|
else if (keysType === "platform") {
|
|
28
|
-
return getPlatformValue(
|
|
26
|
+
return getPlatformValue(valueAsThemeValues, breakpoints, deviceWidth, devicePlatform, currentLightDarkSelection);
|
|
29
27
|
}
|
|
30
28
|
else if (keysType === "breakpoint") {
|
|
31
|
-
return getBreakpointValue(
|
|
29
|
+
return getBreakpointValue(valueAsThemeValues, breakpoints, deviceWidth, devicePlatform, currentLightDarkSelection);
|
|
32
30
|
}
|
|
33
31
|
else if (keysType === "lightDark") {
|
|
34
|
-
return getLightDarkValue(
|
|
32
|
+
return getLightDarkValue(valueAsThemeValues, breakpoints, deviceWidth, devicePlatform, currentLightDarkSelection);
|
|
35
33
|
}
|
|
36
34
|
else {
|
|
37
35
|
return undefined;
|
|
38
36
|
}
|
|
39
37
|
}
|
|
38
|
+
else {
|
|
39
|
+
return currentValue;
|
|
40
|
+
}
|
|
40
41
|
},
|
|
41
42
|
set: () => {
|
|
42
43
|
throw new Error("Theme is read only, cannot be modified at runtime");
|
|
@@ -78,11 +79,12 @@ function allFalse(a, b, c, d) {
|
|
|
78
79
|
function getPlatformValue(value, breakpoints, deviceWidth, devicePlatform, currentLightDarkSelection) {
|
|
79
80
|
var _a;
|
|
80
81
|
const currentPlatformValue = (_a = value[devicePlatform]) !== null && _a !== void 0 ? _a : value.default;
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
const valueAsThemeValues = asThemeValuesObject(currentPlatformValue);
|
|
83
|
+
if (valueAsThemeValues) {
|
|
84
|
+
return createThemeValuesProxy(valueAsThemeValues, breakpoints, deviceWidth, devicePlatform, currentLightDarkSelection);
|
|
83
85
|
}
|
|
84
86
|
else {
|
|
85
|
-
return
|
|
87
|
+
return currentPlatformValue;
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
90
|
function getBreakpointValue(value, breakpoints, deviceWidth, devicePlatform, currentLightDarkSelection) {
|
|
@@ -96,21 +98,23 @@ function getBreakpointValue(value, breakpoints, deviceWidth, devicePlatform, cur
|
|
|
96
98
|
}
|
|
97
99
|
}
|
|
98
100
|
const currentBreakpointValue = (_a = value[currentBreakpointKey]) !== null && _a !== void 0 ? _a : value.default;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
+
const valueAsThemeValues = asThemeValuesObject(currentBreakpointValue);
|
|
102
|
+
if (valueAsThemeValues) {
|
|
103
|
+
return createThemeValuesProxy(valueAsThemeValues, breakpoints, deviceWidth, devicePlatform, currentLightDarkSelection);
|
|
101
104
|
}
|
|
102
105
|
else {
|
|
103
|
-
return
|
|
106
|
+
return currentBreakpointValue;
|
|
104
107
|
}
|
|
105
108
|
}
|
|
106
109
|
function getLightDarkValue(value, breakpoints, deviceWidth, devicePlatform, currentLightDarkSelection) {
|
|
107
110
|
var _a;
|
|
108
111
|
const currentLightDarkValue = (_a = value[currentLightDarkSelection]) !== null && _a !== void 0 ? _a : value.default;
|
|
109
|
-
|
|
110
|
-
|
|
112
|
+
const valueAsThemeValues = asThemeValuesObject(currentLightDarkValue);
|
|
113
|
+
if (valueAsThemeValues) {
|
|
114
|
+
return createThemeValuesProxy(valueAsThemeValues, breakpoints, deviceWidth, devicePlatform, currentLightDarkSelection);
|
|
111
115
|
}
|
|
112
116
|
else {
|
|
113
|
-
return
|
|
117
|
+
return currentLightDarkValue;
|
|
114
118
|
}
|
|
115
119
|
}
|
|
116
120
|
//# sourceMappingURL=createThemeValuesProxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createThemeValuesProxy.js","sourceRoot":"","sources":["../../../src/createThemeValuesProxy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"createThemeValuesProxy.js","sourceRoot":"","sources":["../../../src/createThemeValuesProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { TextStyle } from "react-native";
|
|
1
2
|
export declare type ThemeValues = {
|
|
2
|
-
[key: string]: string | number | ThemeValues;
|
|
3
|
+
[key: string]: string | number | TextStyle | ThemeValues;
|
|
3
4
|
};
|
|
4
5
|
export declare type Theme = {
|
|
5
6
|
name: string;
|
|
@@ -11,7 +12,19 @@ export declare type Theme = {
|
|
|
11
12
|
border?: ThemeValues;
|
|
12
13
|
};
|
|
13
14
|
typography: {
|
|
14
|
-
|
|
15
|
+
body1?: ThemeValues | TextStyle;
|
|
16
|
+
body2?: ThemeValues | TextStyle;
|
|
17
|
+
button?: ThemeValues | TextStyle;
|
|
18
|
+
caption?: ThemeValues | TextStyle;
|
|
19
|
+
headline1?: ThemeValues | TextStyle;
|
|
20
|
+
headline2?: ThemeValues | TextStyle;
|
|
21
|
+
headline3?: ThemeValues | TextStyle;
|
|
22
|
+
headline4?: ThemeValues | TextStyle;
|
|
23
|
+
headline5?: ThemeValues | TextStyle;
|
|
24
|
+
headline6?: ThemeValues | TextStyle;
|
|
25
|
+
overline?: ThemeValues | TextStyle;
|
|
26
|
+
subtitle1?: ThemeValues | TextStyle;
|
|
27
|
+
subtitle2?: ThemeValues | TextStyle;
|
|
15
28
|
};
|
|
16
29
|
};
|
|
17
30
|
export declare type ValidatedTheme = Theme & {
|
|
@@ -25,6 +38,21 @@ export declare type ReadTheme = Theme & {
|
|
|
25
38
|
foreground?: any;
|
|
26
39
|
border?: any;
|
|
27
40
|
};
|
|
41
|
+
typography: {
|
|
42
|
+
body1?: any;
|
|
43
|
+
body2?: any;
|
|
44
|
+
button?: any;
|
|
45
|
+
caption?: any;
|
|
46
|
+
headline1?: any;
|
|
47
|
+
headline2?: any;
|
|
48
|
+
headline3?: any;
|
|
49
|
+
headline4?: any;
|
|
50
|
+
headline5?: any;
|
|
51
|
+
headline6?: any;
|
|
52
|
+
overline?: any;
|
|
53
|
+
subtitle1?: any;
|
|
54
|
+
subtitle2?: any;
|
|
55
|
+
};
|
|
28
56
|
};
|
|
29
57
|
export declare type ColorPaletteValues = {
|
|
30
58
|
[key: string]: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ColorPalettes, Breakpoints, Theme } from "./types";
|
|
1
|
+
import { ColorPalettes, Breakpoints, Theme, ThemeValues } from "./types";
|
|
2
2
|
export declare function validatePalettes(palettes: ColorPalettes): void;
|
|
3
3
|
export declare function validateBreakpoints(breakpoints: Breakpoints): void;
|
|
4
4
|
export declare function validateTheme(theme: Theme): void;
|
|
5
|
+
export declare function asThemeValuesObject(value: any): ThemeValues | null;
|
|
@@ -1,52 +1,72 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const PaletteSchema = z.record(z.string(), z.record(z.string(), z.string()));
|
|
3
|
+
const BreakpointSchema = z.record(z.string(), z.number());
|
|
4
|
+
const TextStyleSchema = z.union([
|
|
5
|
+
z.object({
|
|
6
|
+
fontSize: z.number(),
|
|
7
|
+
}),
|
|
8
|
+
z.object({
|
|
9
|
+
fontFamily: z.string(),
|
|
10
|
+
}),
|
|
11
|
+
z.object({
|
|
12
|
+
letterSpacing: z.number(),
|
|
13
|
+
}),
|
|
14
|
+
z.object({
|
|
15
|
+
lineHeight: z.number(),
|
|
16
|
+
}),
|
|
17
|
+
]);
|
|
18
|
+
const ThemeValuesSchema = z.record(z.string(), z.lazy(() => z.union([z.string(), z.number(), TextStyleSchema, ThemeValuesSchema])));
|
|
19
|
+
const TextStyleOrThemeValuesSchema = z.union([TextStyleSchema, ThemeValuesSchema]);
|
|
20
|
+
const ThemeSchema = z.object({
|
|
21
|
+
name: z.string(),
|
|
22
|
+
colors: z.object({
|
|
23
|
+
branding: ThemeValuesSchema.optional(),
|
|
24
|
+
text: ThemeValuesSchema.optional(),
|
|
25
|
+
background: ThemeValuesSchema.optional(),
|
|
26
|
+
foreground: ThemeValuesSchema.optional(),
|
|
27
|
+
border: ThemeValuesSchema.optional(),
|
|
28
|
+
}),
|
|
29
|
+
typography: z.object({
|
|
30
|
+
body1: TextStyleOrThemeValuesSchema.optional(),
|
|
31
|
+
body2: TextStyleOrThemeValuesSchema.optional(),
|
|
32
|
+
button: TextStyleOrThemeValuesSchema.optional(),
|
|
33
|
+
caption: TextStyleOrThemeValuesSchema.optional(),
|
|
34
|
+
headline1: TextStyleOrThemeValuesSchema.optional(),
|
|
35
|
+
headline2: TextStyleOrThemeValuesSchema.optional(),
|
|
36
|
+
headline3: TextStyleOrThemeValuesSchema.optional(),
|
|
37
|
+
headline4: TextStyleOrThemeValuesSchema.optional(),
|
|
38
|
+
headline5: TextStyleOrThemeValuesSchema.optional(),
|
|
39
|
+
headline6: TextStyleOrThemeValuesSchema.optional(),
|
|
40
|
+
overline: TextStyleOrThemeValuesSchema.optional(),
|
|
41
|
+
subtitle1: TextStyleOrThemeValuesSchema.optional(),
|
|
42
|
+
subtitle2: TextStyleOrThemeValuesSchema.optional(),
|
|
43
|
+
}),
|
|
44
|
+
});
|
|
1
45
|
export function validatePalettes(palettes) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
for (const [innerKey, value] of Object.entries(palettes[key])) {
|
|
7
|
-
if (typeof innerKey !== "string") {
|
|
8
|
-
throw new Error(`Invalid palette color key, ${innerKey} is not a string`);
|
|
9
|
-
}
|
|
10
|
-
if (typeof value !== "string") {
|
|
11
|
-
throw new Error(`Invalid palette color value, ${value} is not a string`);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
46
|
+
const result = PaletteSchema.safeParse(palettes);
|
|
47
|
+
if (!result.success) {
|
|
48
|
+
throw new Error("Invalid palettes object: " + result.error.message);
|
|
14
49
|
}
|
|
15
50
|
}
|
|
16
51
|
export function validateBreakpoints(breakpoints) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
if (typeof value !== "number") {
|
|
22
|
-
throw new Error(`Invalid breakpoint value, ${value} is not a number`);
|
|
23
|
-
}
|
|
52
|
+
const result = BreakpointSchema.safeParse(breakpoints);
|
|
53
|
+
if (!result.success) {
|
|
54
|
+
throw new Error("Invalid breakpoints object: " + result.error.message);
|
|
24
55
|
}
|
|
25
56
|
}
|
|
26
57
|
export function validateTheme(theme) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
for (const [key, value] of Object.entries(themeValue)) {
|
|
32
|
-
if (typeof key !== "string") {
|
|
33
|
-
throw new Error(`Invalid theme key, ${key} is not a string`);
|
|
34
|
-
}
|
|
35
|
-
if (value === undefined || value === null) {
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
else if (typeof value === "object") {
|
|
39
|
-
validateThemeValues(value);
|
|
40
|
-
}
|
|
41
|
-
else if (typeof value !== "string" && typeof value !== "number") {
|
|
42
|
-
throw new Error(`Invalid theme value, ${value} is not a string, number, or object`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
58
|
+
const result = ThemeSchema.safeParse(theme);
|
|
59
|
+
if (!result.success) {
|
|
60
|
+
throw new Error("Invalid theme object: " + result.error.message);
|
|
45
61
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
62
|
+
}
|
|
63
|
+
export function asThemeValuesObject(value) {
|
|
64
|
+
var _a;
|
|
65
|
+
// Text style matches the shape of ThemeValues, but we don't want to treat it as a ThemeValues
|
|
66
|
+
const isTextStyle = TextStyleSchema.safeParse(value).success;
|
|
67
|
+
if (isTextStyle) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return (_a = ThemeValuesSchema.safeParse(value).data) !== null && _a !== void 0 ? _a : null;
|
|
51
71
|
}
|
|
52
72
|
//# sourceMappingURL=validators.js.map
|