app-studio 0.7.2 → 0.7.5
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 +35 -35
- package/dist/app-studio.cjs.development.js +144 -165
- package/dist/app-studio.cjs.development.js.map +1 -1
- package/dist/app-studio.cjs.production.min.js +1 -1
- package/dist/app-studio.esm.js +144 -165
- package/dist/app-studio.esm.js.map +1 -1
- package/dist/app-studio.umd.development.js +144 -165
- package/dist/app-studio.umd.development.js.map +1 -1
- package/dist/app-studio.umd.production.min.js +1 -1
- package/dist/stories/ScrollAnimation.stories.d.ts +1 -1
- package/docs/Animation.md +3 -3
- package/docs/Components.md +8 -8
- package/docs/Design.md +2 -2
- package/docs/Events.md +30 -30
- package/docs/Hooks.md +6 -6
- package/docs/README.md +31 -31
- package/docs/Responsive.md +3 -3
- package/docs/Theming.md +183 -150
- package/package.json +1 -1
|
@@ -757,15 +757,15 @@ const defaultDarkColors = {
|
|
|
757
757
|
black: '#FFFFFF'
|
|
758
758
|
};
|
|
759
759
|
// Centralized regex for color token detection
|
|
760
|
-
// Matches color
|
|
761
|
-
const COLOR_TOKEN_REGEX = /(color
|
|
760
|
+
// Matches color-x-y-z or theme-x-y (dash notation)
|
|
761
|
+
const COLOR_TOKEN_REGEX = /(color-[a-zA-Z0-9-]+|theme-[a-zA-Z0-9-]+)/g;
|
|
762
762
|
/**
|
|
763
763
|
* Checks if a value contains color tokens.
|
|
764
764
|
* @param value - The string to check.
|
|
765
765
|
* @returns True if the value contains color tokens.
|
|
766
766
|
*/
|
|
767
767
|
const hasColorToken = value => {
|
|
768
|
-
return value.includes('color
|
|
768
|
+
return value.includes('color-') || value.includes('theme-');
|
|
769
769
|
};
|
|
770
770
|
/**
|
|
771
771
|
* Replaces color tokens in a string with values returned by a resolver function.
|
|
@@ -783,8 +783,11 @@ const replaceColorTokens = (value, resolver) => {
|
|
|
783
783
|
};
|
|
784
784
|
|
|
785
785
|
// --- Constants ---
|
|
786
|
-
|
|
787
|
-
const
|
|
786
|
+
// Public API prefixes (dash notation: theme-primary, color-blue-500)
|
|
787
|
+
const THEME_PREFIX = 'theme-';
|
|
788
|
+
const COLOR_PREFIX = 'color-';
|
|
789
|
+
const LIGHT_PREFIX = 'light-';
|
|
790
|
+
const DARK_PREFIX = 'dark-';
|
|
788
791
|
const TRANSPARENT = 'transparent';
|
|
789
792
|
// --- CSS Variable Injection Helper ---
|
|
790
793
|
const generateCSSVariables = (theme, lightColors, darkColors) => {
|
|
@@ -828,21 +831,17 @@ const generateCSSVariables = (theme, lightColors, darkColors) => {
|
|
|
828
831
|
collectGenericNames(lightColors.main, 'color');
|
|
829
832
|
collectGenericNames(lightColors.palette, 'color');
|
|
830
833
|
// 3. Process Theme variables (references)
|
|
834
|
+
// Theme config uses dash notation (color-blue-500, theme-primary)
|
|
831
835
|
const processTheme = (obj, prefix) => {
|
|
832
836
|
Object.keys(obj).forEach(key => {
|
|
833
837
|
const value = obj[key];
|
|
834
|
-
const variableName = `${prefix}-${key}
|
|
838
|
+
const variableName = `${prefix}-${key}`;
|
|
835
839
|
if (typeof value === 'object' && value !== null) {
|
|
836
840
|
processTheme(value, variableName);
|
|
837
841
|
} else if (typeof value === 'string') {
|
|
838
|
-
if (value.startsWith(
|
|
839
|
-
// Convert 'color
|
|
840
|
-
|
|
841
|
-
const refVar = value.replace(/\./g, '-');
|
|
842
|
-
themeVariables.push(`--${variableName}: var(--${refVar});`);
|
|
843
|
-
} else if (value.startsWith(THEME_PREFIX)) {
|
|
844
|
-
const refVar = value.replace(/\./g, '-');
|
|
845
|
-
themeVariables.push(`--${variableName}: var(--${refVar});`);
|
|
842
|
+
if (value.startsWith('color-') || value.startsWith('theme-')) {
|
|
843
|
+
// Convert 'color-blue-500' -> 'var(--color-blue-500)'
|
|
844
|
+
themeVariables.push(`--${variableName}: var(--${value});`);
|
|
846
845
|
} else {
|
|
847
846
|
themeVariables.push(`--${variableName}: ${value};`);
|
|
848
847
|
}
|
|
@@ -878,14 +877,16 @@ const generateCSSVariables = (theme, lightColors, darkColors) => {
|
|
|
878
877
|
return css;
|
|
879
878
|
};
|
|
880
879
|
// --- Default Configuration ---
|
|
880
|
+
// Theme values use dash notation (color-X or color-X-shade)
|
|
881
|
+
// which gets resolved to CSS variables (var(--color-X-shade))
|
|
881
882
|
const defaultThemeMain = {
|
|
882
|
-
primary:
|
|
883
|
-
secondary:
|
|
884
|
-
success:
|
|
885
|
-
error:
|
|
886
|
-
warning:
|
|
887
|
-
disabled:
|
|
888
|
-
loading:
|
|
883
|
+
primary: 'color-black',
|
|
884
|
+
secondary: 'color-blue',
|
|
885
|
+
success: 'color-green-500',
|
|
886
|
+
error: 'color-red-500',
|
|
887
|
+
warning: 'color-orange-500',
|
|
888
|
+
disabled: 'color-gray-500',
|
|
889
|
+
loading: 'color-dark-500'
|
|
889
890
|
};
|
|
890
891
|
const defaultLightColorConfig = {
|
|
891
892
|
main: defaultLightColors,
|
|
@@ -943,9 +944,9 @@ const convertToRgba = (color, alpha) => {
|
|
|
943
944
|
// Handle rgb/rgba colors
|
|
944
945
|
if (color.startsWith('rgb')) {
|
|
945
946
|
// Extract the values from rgb() or rgba()
|
|
946
|
-
const
|
|
947
|
-
if (
|
|
948
|
-
const values =
|
|
947
|
+
const rgbMatch = color.match(/rgba?\(([^)]+)\)/);
|
|
948
|
+
if (rgbMatch) {
|
|
949
|
+
const values = rgbMatch[1].split(',').map(v => v.trim());
|
|
949
950
|
const r = values[0];
|
|
950
951
|
const g = values[1];
|
|
951
952
|
const b = values[2];
|
|
@@ -1100,83 +1101,111 @@ const ThemeProvider = _ref => {
|
|
|
1100
1101
|
if (token === TRANSPARENT) return token;
|
|
1101
1102
|
if (depth > 25) return token;
|
|
1102
1103
|
const effectiveTheme = override?.theme ? deepMerge(mergedTheme, override.theme) : mergedTheme;
|
|
1103
|
-
//
|
|
1104
|
+
// Convert dash notation to internal format for resolution
|
|
1105
|
+
// theme-primary-100 -> parts for processing
|
|
1104
1106
|
if (token.startsWith(THEME_PREFIX)) {
|
|
1105
|
-
const
|
|
1107
|
+
const parts = token.substring(THEME_PREFIX.length).split('-');
|
|
1108
|
+
const lastPart = parts[parts.length - 1];
|
|
1109
|
+
const maybeAlpha = parseInt(lastPart, 10);
|
|
1110
|
+
// Check for alpha suffix: theme-primary-100 (2+ parts after prefix, last is 0-1000)
|
|
1111
|
+
if (parts.length >= 2 && !isNaN(maybeAlpha) && maybeAlpha >= 0 && maybeAlpha <= 1000) {
|
|
1112
|
+
const themeKey = parts.slice(0, -1).join('-');
|
|
1113
|
+
const baseToken = `${THEME_PREFIX}${themeKey}`;
|
|
1114
|
+
const resolvedBase = resolveColorTokenForMode(baseToken, mode, override, depth + 1);
|
|
1115
|
+
return convertToRgba(resolvedBase, maybeAlpha);
|
|
1116
|
+
}
|
|
1117
|
+
const themeKey = parts.join('-');
|
|
1106
1118
|
const themeValue = effectiveTheme[themeKey];
|
|
1107
1119
|
if (typeof themeValue === 'string') {
|
|
1120
|
+
// Theme values use dash notation (color-blue-500)
|
|
1108
1121
|
return resolveColorTokenForMode(themeValue, mode, override, depth + 1);
|
|
1109
1122
|
}
|
|
1110
1123
|
return token;
|
|
1111
1124
|
}
|
|
1112
|
-
//
|
|
1113
|
-
if (token.startsWith('light.') || token.startsWith('dark.')) {
|
|
1114
|
-
const explicitMode = token.startsWith('light.') ? 'light' : 'dark';
|
|
1115
|
-
const prefixLength = token.startsWith('light.') ? 6 : 5;
|
|
1116
|
-
const modifiedName = `${COLOR_PREFIX}${token.substring(prefixLength)}`;
|
|
1117
|
-
return resolveColorTokenForMode(modifiedName, explicitMode, override, depth + 1);
|
|
1118
|
-
}
|
|
1119
|
-
// Resolve color.* tokens
|
|
1125
|
+
// Handle dash notation: color-blue-500, light-blue-500, dark-blue-500
|
|
1120
1126
|
if (token.startsWith(COLOR_PREFIX)) {
|
|
1121
|
-
const
|
|
1127
|
+
const parts = token.substring(COLOR_PREFIX.length).split('-');
|
|
1122
1128
|
const colorsToUse = themeColors[mode];
|
|
1123
1129
|
const palette = deepMerge(colorsToUse.palette, override?.colors?.palette || {});
|
|
1124
1130
|
const main = deepMerge(colorsToUse.main, override?.colors?.main || {});
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
const [
|
|
1128
|
-
const
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1131
|
+
// color-blue-500-200 (alpha)
|
|
1132
|
+
if (parts.length >= 3) {
|
|
1133
|
+
const lastPart = parts[parts.length - 1];
|
|
1134
|
+
const maybeAlpha = parseInt(lastPart, 10);
|
|
1135
|
+
if (!isNaN(maybeAlpha) && maybeAlpha >= 0 && maybeAlpha <= 1000) {
|
|
1136
|
+
const colorName = parts[0];
|
|
1137
|
+
const variant = parts[1];
|
|
1138
|
+
const base = palette?.[colorName]?.[variant];
|
|
1139
|
+
if (typeof base === 'string') {
|
|
1140
|
+
return convertToRgba(base, maybeAlpha);
|
|
1141
|
+
}
|
|
1132
1142
|
}
|
|
1133
|
-
return token;
|
|
1134
1143
|
}
|
|
1135
|
-
|
|
1136
|
-
|
|
1144
|
+
// color-blue-500
|
|
1145
|
+
if (parts.length === 2) {
|
|
1146
|
+
const [colorName, variant] = parts;
|
|
1137
1147
|
const value = palette?.[colorName]?.[variant];
|
|
1138
1148
|
return typeof value === 'string' ? value : token;
|
|
1139
1149
|
}
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
const value = main?.[
|
|
1150
|
+
// color-blue
|
|
1151
|
+
if (parts.length === 1) {
|
|
1152
|
+
const value = main?.[parts[0]];
|
|
1143
1153
|
return typeof value === 'string' ? value : token;
|
|
1144
1154
|
}
|
|
1145
1155
|
return token;
|
|
1146
1156
|
}
|
|
1157
|
+
// Handle light-* and dark-* tokens
|
|
1158
|
+
if (token.startsWith(LIGHT_PREFIX) || token.startsWith(DARK_PREFIX)) {
|
|
1159
|
+
const explicitMode = token.startsWith(LIGHT_PREFIX) ? 'light' : 'dark';
|
|
1160
|
+
const prefix = token.startsWith(LIGHT_PREFIX) ? LIGHT_PREFIX : DARK_PREFIX;
|
|
1161
|
+
const colorPart = token.substring(prefix.length);
|
|
1162
|
+
return resolveColorTokenForMode(`${COLOR_PREFIX}${colorPart}`, explicitMode, override, depth + 1);
|
|
1163
|
+
}
|
|
1147
1164
|
return token;
|
|
1148
1165
|
}, [mergedTheme, themeColors]);
|
|
1149
1166
|
// --- Helper function to resolve color tokens to actual values ---
|
|
1167
|
+
// This is used internally and handles dash notation (public API)
|
|
1150
1168
|
const resolveColorToken = React.useCallback(token => {
|
|
1151
1169
|
if (!token || typeof token !== 'string') return String(token);
|
|
1152
1170
|
if (token === TRANSPARENT) return token;
|
|
1153
1171
|
const colors = currentColors;
|
|
1154
|
-
//
|
|
1172
|
+
// Handle dash notation: color-blue-500
|
|
1155
1173
|
if (token.startsWith(COLOR_PREFIX)) {
|
|
1156
|
-
const
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
const
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1174
|
+
const parts = token.substring(COLOR_PREFIX.length).split('-');
|
|
1175
|
+
// color-blue-500-200 (alpha)
|
|
1176
|
+
if (parts.length >= 3) {
|
|
1177
|
+
const lastPart = parts[parts.length - 1];
|
|
1178
|
+
const maybeAlpha = parseInt(lastPart, 10);
|
|
1179
|
+
if (!isNaN(maybeAlpha) && maybeAlpha >= 0 && maybeAlpha <= 1000) {
|
|
1180
|
+
const percentage = Math.round(maybeAlpha / 1000 * 100);
|
|
1181
|
+
const baseVar = `color-${parts.slice(0, -1).join('-')}`;
|
|
1182
|
+
return `color-mix(in srgb, var(--${baseVar}) ${percentage}%, transparent)`;
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
// color-blue-500
|
|
1186
|
+
if (parts.length === 2) {
|
|
1187
|
+
const [colorName, shade] = parts;
|
|
1164
1188
|
const shadeValue = colors.palette[colorName]?.[Number(shade)];
|
|
1165
1189
|
return typeof shadeValue === 'string' ? shadeValue : token;
|
|
1166
|
-
}
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
const
|
|
1170
|
-
|
|
1171
|
-
if (!isNaN(alpha)) {
|
|
1172
|
-
const percentage = Math.round(alpha / 1000 * 100);
|
|
1173
|
-
return `color-mix(in srgb, var(--color-${colorName}-${shade}) ${percentage}%, transparent)`;
|
|
1174
|
-
}
|
|
1190
|
+
}
|
|
1191
|
+
// color-blue
|
|
1192
|
+
if (parts.length === 1) {
|
|
1193
|
+
const colorValue = colors.main[parts[0]];
|
|
1194
|
+
return typeof colorValue === 'string' ? colorValue : token;
|
|
1175
1195
|
}
|
|
1176
1196
|
}
|
|
1177
|
-
//
|
|
1197
|
+
// Handle dash notation: theme-primary, theme-primary-100
|
|
1178
1198
|
if (token.startsWith(THEME_PREFIX)) {
|
|
1179
|
-
const
|
|
1199
|
+
const parts = token.substring(THEME_PREFIX.length).split('-');
|
|
1200
|
+
const lastPart = parts[parts.length - 1];
|
|
1201
|
+
const maybeAlpha = parseInt(lastPart, 10);
|
|
1202
|
+
// theme-primary-100 (alpha)
|
|
1203
|
+
if (parts.length >= 2 && !isNaN(maybeAlpha) && maybeAlpha >= 0 && maybeAlpha <= 1000) {
|
|
1204
|
+
const percentage = Math.round(maybeAlpha / 1000 * 100);
|
|
1205
|
+
const baseVar = `theme-${parts.slice(0, -1).join('-')}`;
|
|
1206
|
+
return `color-mix(in srgb, var(--${baseVar}) ${percentage}%, transparent)`;
|
|
1207
|
+
}
|
|
1208
|
+
const themeKey = parts.join('-');
|
|
1180
1209
|
const themeValue = mergedTheme[themeKey];
|
|
1181
1210
|
if (typeof themeValue === 'string') {
|
|
1182
1211
|
return resolveColorToken(themeValue);
|
|
@@ -1185,86 +1214,46 @@ const ThemeProvider = _ref => {
|
|
|
1185
1214
|
return token;
|
|
1186
1215
|
}, [currentColors, mergedTheme]);
|
|
1187
1216
|
// The mode is now handled by the data-attribute on the container
|
|
1188
|
-
// --- Memoized getColor function -
|
|
1189
|
-
const getColor = React.useCallback(
|
|
1190
|
-
if (!name || typeof name !== 'string') return String(name);
|
|
1217
|
+
// --- Memoized getColor function - Dash notation only ---
|
|
1218
|
+
const getColor = React.useCallback(name => {
|
|
1219
|
+
if (!name || typeof name !== 'string') return String(name);
|
|
1191
1220
|
if (name === TRANSPARENT) return name;
|
|
1192
|
-
//
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
if (name.startsWith(THEME_PREFIX)) {
|
|
1196
|
-
return `var(--${name.replace(/\./g, '-')})`;
|
|
1197
|
-
}
|
|
1198
|
-
if (name.startsWith(COLOR_PREFIX)) {
|
|
1199
|
-
const parts = name.split('.');
|
|
1200
|
-
// Simple lookup (e.g. color.blue or color.blue.500)
|
|
1201
|
-
if (parts.length < 4) {
|
|
1202
|
-
return `var(--${name.replace(/\./g, '-')})`;
|
|
1203
|
-
}
|
|
1204
|
-
}
|
|
1221
|
+
// Strict Mode Check - only dash notation is supported
|
|
1222
|
+
if (strict && !name.startsWith(COLOR_PREFIX) && !name.startsWith(THEME_PREFIX) && !name.startsWith(LIGHT_PREFIX) && !name.startsWith(DARK_PREFIX)) {
|
|
1223
|
+
console.warn(`[Theme] Invalid color token: '${name}'. Use dash notation: theme-primary, color-blue-500`);
|
|
1205
1224
|
}
|
|
1206
|
-
|
|
1207
|
-
const
|
|
1208
|
-
const
|
|
1209
|
-
|
|
1210
|
-
if (
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
}
|
|
1217
|
-
// 3. Select the correct color set (light/dark) based on the effective mode
|
|
1218
|
-
const colorsToUse = themeColors[effectiveMode];
|
|
1219
|
-
if (!colorsToUse) {
|
|
1220
|
-
console.warn(`Color set for mode "${effectiveMode}" not found.`);
|
|
1221
|
-
return name;
|
|
1222
|
-
}
|
|
1223
|
-
let resolvedColor = name;
|
|
1224
|
-
try {
|
|
1225
|
-
// Resolve "light.*" or "dark.*" paths directly
|
|
1226
|
-
if (name.startsWith('light.') || name.startsWith('dark.')) {
|
|
1227
|
-
const prefixLength = name.startsWith('light.') ? 6 : 5;
|
|
1228
|
-
const modifiedName = `${COLOR_PREFIX}${name.substring(prefixLength)}`;
|
|
1229
|
-
return `var(--${modifiedName.replace(/\./g, '-')})`;
|
|
1225
|
+
const parts = name.split('-');
|
|
1226
|
+
const lastPart = parts[parts.length - 1];
|
|
1227
|
+
const maybeAlpha = parseInt(lastPart, 10);
|
|
1228
|
+
// Handle theme-* tokens (e.g., theme-primary, theme-primary-100)
|
|
1229
|
+
if (name.startsWith(THEME_PREFIX)) {
|
|
1230
|
+
// Check for alpha suffix: theme-primary-100 (3+ parts, last is 0-1000)
|
|
1231
|
+
if (parts.length >= 3 && !isNaN(maybeAlpha) && maybeAlpha >= 0 && maybeAlpha <= 1000) {
|
|
1232
|
+
const baseVar = parts.slice(0, -1).join('-');
|
|
1233
|
+
const percentage = Math.round(maybeAlpha / 1000 * 100);
|
|
1234
|
+
return `color-mix(in srgb, var(--${baseVar}) ${percentage}%, transparent)`;
|
|
1230
1235
|
}
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
if (typeof shadeValue === 'string' && !isNaN(alpha)) {
|
|
1241
|
-
resolvedColor = convertToRgba(shadeValue, alpha);
|
|
1242
|
-
}
|
|
1243
|
-
} else if (keys.length === 2) {
|
|
1244
|
-
// e.g. "color.blue.500"
|
|
1245
|
-
const [colorName, variant] = keys;
|
|
1246
|
-
const palette = deepMerge(colorsToUse.palette, override?.colors?.palette || {});
|
|
1247
|
-
const shadeValue = palette?.[colorName]?.[variant];
|
|
1248
|
-
if (typeof shadeValue === 'string') {
|
|
1249
|
-
resolvedColor = shadeValue;
|
|
1250
|
-
}
|
|
1251
|
-
} else if (keys.length === 1) {
|
|
1252
|
-
// e.g. "color.blue"
|
|
1253
|
-
const [colorName] = keys;
|
|
1254
|
-
const main = deepMerge(colorsToUse.main, override?.colors?.main || {});
|
|
1255
|
-
const colorValue = main?.[colorName];
|
|
1256
|
-
if (typeof colorValue === 'string') {
|
|
1257
|
-
resolvedColor = colorValue;
|
|
1258
|
-
}
|
|
1259
|
-
}
|
|
1236
|
+
return `var(--${name})`;
|
|
1237
|
+
}
|
|
1238
|
+
// Handle color-* tokens (e.g., color-blue-500, color-blue-500-200)
|
|
1239
|
+
if (name.startsWith(COLOR_PREFIX)) {
|
|
1240
|
+
// Check for alpha suffix: color-blue-500-200 (4+ parts, last is 0-1000)
|
|
1241
|
+
if (parts.length >= 4 && !isNaN(maybeAlpha) && maybeAlpha >= 0 && maybeAlpha <= 1000) {
|
|
1242
|
+
const baseVar = parts.slice(0, -1).join('-');
|
|
1243
|
+
const percentage = Math.round(maybeAlpha / 1000 * 100);
|
|
1244
|
+
return `color-mix(in srgb, var(--${baseVar}) ${percentage}%, transparent)`;
|
|
1260
1245
|
}
|
|
1261
|
-
|
|
1262
|
-
console.error(`Error resolving color "${name}"`, e);
|
|
1263
|
-
resolvedColor = name;
|
|
1246
|
+
return `var(--${name})`;
|
|
1264
1247
|
}
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1248
|
+
// Handle light-* and dark-* tokens (e.g., light-blue-500, dark-red-200)
|
|
1249
|
+
if (name.startsWith(LIGHT_PREFIX) || name.startsWith(DARK_PREFIX)) {
|
|
1250
|
+
const prefix = name.startsWith(LIGHT_PREFIX) ? LIGHT_PREFIX : DARK_PREFIX;
|
|
1251
|
+
const colorPart = name.substring(prefix.length);
|
|
1252
|
+
return `var(--${prefix}color-${colorPart})`;
|
|
1253
|
+
}
|
|
1254
|
+
// Return as-is for direct values (#hex, rgb(), etc.)
|
|
1255
|
+
return name;
|
|
1256
|
+
}, [strict]);
|
|
1268
1257
|
const getColorHex = React.useCallback((name, override) => {
|
|
1269
1258
|
if (!name || typeof name !== 'string') return String(name);
|
|
1270
1259
|
if (name === TRANSPARENT) return '#00000000';
|
|
@@ -1298,7 +1287,7 @@ const ThemeProvider = _ref => {
|
|
|
1298
1287
|
if (!name || typeof name !== 'string') return undefined;
|
|
1299
1288
|
const effectiveMode = override?.themeMode ?? themeMode;
|
|
1300
1289
|
const effectiveTheme = override?.theme ? deepMerge(mergedTheme, override.theme) : mergedTheme;
|
|
1301
|
-
// Resolve theme
|
|
1290
|
+
// Resolve theme-* tokens to get the underlying color token
|
|
1302
1291
|
let colorToken = name;
|
|
1303
1292
|
if (name.startsWith(THEME_PREFIX)) {
|
|
1304
1293
|
const themeKey = name.substring(THEME_PREFIX.length);
|
|
@@ -1307,16 +1296,16 @@ const ThemeProvider = _ref => {
|
|
|
1307
1296
|
colorToken = themeValue;
|
|
1308
1297
|
}
|
|
1309
1298
|
}
|
|
1310
|
-
// Handle light
|
|
1311
|
-
if (colorToken.startsWith(
|
|
1312
|
-
const
|
|
1313
|
-
colorToken = `${COLOR_PREFIX}${colorToken.substring(
|
|
1299
|
+
// Handle light-* or dark-* prefixes
|
|
1300
|
+
if (colorToken.startsWith(LIGHT_PREFIX) || colorToken.startsWith(DARK_PREFIX)) {
|
|
1301
|
+
const prefix = colorToken.startsWith(LIGHT_PREFIX) ? LIGHT_PREFIX : DARK_PREFIX;
|
|
1302
|
+
colorToken = `${COLOR_PREFIX}${colorToken.substring(prefix.length)}`;
|
|
1314
1303
|
}
|
|
1315
|
-
// Extract color scheme from color
|
|
1304
|
+
// Extract color scheme from color-* tokens (e.g., color-blue-500 -> 'blue')
|
|
1316
1305
|
if (colorToken.startsWith(COLOR_PREFIX)) {
|
|
1317
|
-
const
|
|
1318
|
-
if (
|
|
1319
|
-
return
|
|
1306
|
+
const parts = colorToken.substring(COLOR_PREFIX.length).split('-');
|
|
1307
|
+
if (parts.length >= 1) {
|
|
1308
|
+
return parts[0]; // Return the color scheme name (e.g., 'blue', 'pink')
|
|
1320
1309
|
}
|
|
1321
1310
|
}
|
|
1322
1311
|
// Handle hex or rgba colors by finding the closest match in the palette
|
|
@@ -2702,7 +2691,7 @@ function processPseudoStyles(styles, parentPseudo, getColor, manager) {
|
|
|
2702
2691
|
*/
|
|
2703
2692
|
function processEventStyles(eventName, eventStyles, getColor, manager) {
|
|
2704
2693
|
const classes = [];
|
|
2705
|
-
// Handle string shorthand (e.g., _hover: "color
|
|
2694
|
+
// Handle string shorthand (e.g., _hover: "color-red-500")
|
|
2706
2695
|
if (typeof eventStyles === 'string') {
|
|
2707
2696
|
eventStyles = {
|
|
2708
2697
|
color: eventStyles
|
|
@@ -3022,20 +3011,10 @@ const Element = /*#__PURE__*/React__default.memo(/*#__PURE__*/React.forwardRef((
|
|
|
3022
3011
|
}
|
|
3023
3012
|
const {
|
|
3024
3013
|
onPress,
|
|
3025
|
-
blend
|
|
3014
|
+
blend,
|
|
3026
3015
|
animateOn = 'Both',
|
|
3027
3016
|
...rest
|
|
3028
3017
|
} = props;
|
|
3029
|
-
let blend = initialBlend;
|
|
3030
|
-
if (blend !== false && props.color === undefined && typeof props.children === 'string' && (as === 'span' || as === 'div' || as === 'sub' || as === 'sup')) {
|
|
3031
|
-
const otherMediaProps = {
|
|
3032
|
-
...(props.on || {}),
|
|
3033
|
-
...(props.media || {})
|
|
3034
|
-
};
|
|
3035
|
-
if (otherMediaProps.color === undefined) {
|
|
3036
|
-
blend = true;
|
|
3037
|
-
}
|
|
3038
|
-
}
|
|
3039
3018
|
const elementRef = React.useRef(null);
|
|
3040
3019
|
const setRef = React.useCallback(node => {
|
|
3041
3020
|
elementRef.current = node;
|
|
@@ -4952,7 +4931,7 @@ const Skeleton = /*#__PURE__*/React__default.memo(_ref => {
|
|
|
4952
4931
|
...props
|
|
4953
4932
|
} = _ref;
|
|
4954
4933
|
return /*#__PURE__*/React__default.createElement(View, Object.assign({
|
|
4955
|
-
backgroundColor: "color
|
|
4934
|
+
backgroundColor: "color-black-300"
|
|
4956
4935
|
}, props, {
|
|
4957
4936
|
overflow: "hidden"
|
|
4958
4937
|
}), /*#__PURE__*/React__default.createElement(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-studio.cjs.development.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-studio.cjs.development.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|